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) {