Mercurial > hg > Members > kono > Cerium
diff TaskManager/Cell/CellTaskManagerImpl.cc @ 940:0d404f6c36a8
unknown dead lock still...
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Sat, 31 Jul 2010 16:44:10 +0900 |
parents | 9cfac2e8fc2e |
children | 15026ebf7a17 |
line wrap: on
line diff
--- a/TaskManager/Cell/CellTaskManagerImpl.cc Sat Jul 31 12:18:19 2010 +0900 +++ b/TaskManager/Cell/CellTaskManagerImpl.cc Sat Jul 31 16:44:10 2010 +0900 @@ -71,8 +71,7 @@ // SPE_ANY が指定されていた時に // これをインクリメントしつつ呼ぶことにする。 -// 乱数使ってもいいけどさ。 -int cur_anySpeid = 0; +unsigned int cur_anySpeid = 0; /** * ActiveTaskQueue から Task を @@ -90,23 +89,14 @@ if (htask->cpu_type == SPE_ANY) { speid = cur_anySpeid++; - cur_anySpeid = (cur_anySpeid < machineNum) - ? cur_anySpeid : 0; } else { // -1 してるのは // htask->cpu_type - CPU_SPE で // SPE0 = 1, SPE1 = 2, ... SPE5 = 6 ってなってるので // 配列的 (SPE0 = arr[0], SPE1 = arr[1]) にするため speid = htask->cpu_type - CPU_SPE - 1; - - // SPU の数以上が指定されていれば - // とりあえず MAX_USE_SPE_NUM (実際に動く SPE の最大数) で - // あまり求めてそれを使うことにする。 - // ここで判定するもんでもないか? - if (speid >= machineNum) { - speid %= machineNum; - } } + speid %= machineNum; set_taskList(htask, taskListInfo[speid]); } } @@ -179,7 +169,9 @@ if (w) { for( TaskQueue *q = w->getFirst(); q; q = w->getNext(q)) { printf(" waiting task%d %lx",q->task->command, (long)q->task); - if (!waitTaskQueue->find(q->task)) printf("!"); // stray task + if (!waitTaskQueue->find(q->task)) { + printf("!"); // stray task + } loop_check(q->task,p, 10); } }