Mercurial > hg > GearsTemplate
diff src/parallel_execution/examples/calc.cbc @ 353:b07078bd1f2c
Add spawn Tasks to TaskManagerImpl
author | Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 20 Jun 2017 03:02:29 +0900 |
parents | 3e01e963eb2d |
children | 45afe5d70956 |
line wrap: on
line diff
--- a/src/parallel_execution/examples/calc.cbc Fri Jun 16 16:29:27 2017 +0900 +++ b/src/parallel_execution/examples/calc.cbc Tue Jun 20 03:02:29 2017 +0900 @@ -100,11 +100,12 @@ loopCounter->i = 0; taskManager->next = C_code1; + sleep(5); goto meta(context, taskManager->taskManager->TaskManager.shutdown); } __code createTask2(struct LoopCounter* loopCounter, struct TaskManager* taskManager) { - struct Context** tasks = (struct Context**)ALLOC_ARRAY(context, Context, 2); + struct Context** tasks = (struct Context**)ALLOC_ARRAY(context, Context, 3); Integer* integer1 = &ALLOCATE_DATA_GEAR(context, Integer)->Integer; Integer* integer2 = &ALLOCATE_DATA_GEAR(context, Integer)->Integer; @@ -141,11 +142,26 @@ task->maxOdg = task->odg + 1; tasks[1] = task; + // par goto initIntegerDataGears(integer2, integer4, integer5, __exit); + task = NEW(struct Context); + initContext(task); + task->taskManager = &taskManager->taskManager->TaskManager; + task->next = C_initIntegerDataGears; + task->idgCount = 0; + task->idg = task->dataNum; + task->maxIdg = task->idg; + task->odg = task->maxIdg; + task->data[task->odg] = (union Data*)integer2; + task->data[task->odg+1] = (union Data*)integer4; + task->data[task->odg+2] = (union Data*)integer5; + task->maxOdg = task->odg + 3; + tasks[2] = task; + //goto taskManager->setWaitTask(createTask1); taskManager->contexts = tasks; // goto crateTask1(); taskManager->next = C_createTask1; - goto meta(context, taskManager->taskManager->TaskManager.setWaitTask); + goto meta(context, taskManager->taskManager->TaskManager.spawnTasks); } void init(int argc, char** argv) {