Mercurial > hg > Game > CbCTaskManager
view examples/treedependtask/testmanager.cbc @ 10:5d400e07b19d
add automake tools.
author | kent <kent@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 08 Jan 2010 14:48:59 +0900 |
parents | 07fab8c367b2 |
children | f06fb0370caf |
line wrap: on
line source
#include <stdio.h> #include <stdlib.h> #include "CbCTaskManager.h" #include "taskinit.h" #define __DEBUG(f, args...) \ fprintf(stderr, "in %s: "f, __FUNCTION__, ## args) /* it may be moved to TaskManager side. */ __code nojob(void *manager, void *rbuff, void *wbuff) { goto scheduler(manager, ENDTASK, NULL, NULL); } extern __code taskA_0(UserManager *, void *, void *); extern __code taskA_1(UserManager *, void *, void *); extern __code taskA_2(UserManager *, void *, void *); #define NUM 16 /* * TASKs. */ __code starttask(UserManager *manager, void *rbuff, void *wbuff) { UserTask *tasks[NUM]; __DEBUG("s=%p, rb=%p, wb=%p\n", manager, rbuff, wbuff); int i; for (i=0; i<NUM; i++) { tasks[i] = createTask(TASK_A, NULL); taskSetData(tasks[i], (void*)i, i, NULL,0); } taskSetWait(tasks[0], tasks[1]); for (i=1; 2*i<NUM; i++) { taskSetWait(tasks[i], tasks[2*i]); if (2*i+1<NUM) taskSetWait(tasks[i], tasks[2*i+1]); } for (i=0; i<NUM; i++) { taskSpawn(manager, tasks[i]); } goto scheduler(manager, ENDTASK, NULL, NULL); } __code taskA(UserManager *manager, void *rbuff, void *wbuff) { __DEBUG("s=%p, rb=%p, wb=%p\n", manager, rbuff, wbuff); goto scheduler(manager, taskA_0, NULL, NULL); } __code taskA_0(UserManager *manager, void *rbuff, void *wbuff) { __DEBUG("s=%p, rb=%p, wb=%p\n", manager, rbuff, wbuff); goto scheduler(manager, taskA_1, NULL, NULL); } __code taskA_1(UserManager *manager, void *rbuff, void *wbuff) { __DEBUG("s=%p, rb=%p, wb=%p\n", manager, rbuff, wbuff); goto scheduler(manager, taskA_2, NULL, NULL); } __code taskA_2(UserManager *manager, void *rbuff, void *wbuff) { __DEBUG("s=%p, rb=%p, wb=%p\n", manager, rbuff, wbuff); goto scheduler(manager, ENDTASK, NULL, NULL); } __code taskB(UserManager *manager, void *rbuff, void *wbuff) { __DEBUG("s=%p, rb=%p, wb=%p\n", manager, rbuff, wbuff); goto scheduler(manager, taskA_0, NULL, NULL); }