comparison src/parallel_execution/TaskManagerImpl.cbc @ 282:a3448b0f0a56

Add input data gear
author Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
date Sun, 05 Feb 2017 04:08:30 +0900
parents 2c2e4e597eb0
children f1b0cc555b6e
comparison
equal deleted inserted replaced
281:ceb8735aefb0 282:a3448b0f0a56
108 __code taskSend1(struct TaskManagerImpl* taskManager, struct Queue* queue, struct Context* task, __code next(...)) { 108 __code taskSend1(struct TaskManagerImpl* taskManager, struct Queue* queue, struct Context* task, __code next(...)) {
109 struct Queue* tasks = taskManager->workers[task->workerId]->tasks; 109 struct Queue* tasks = taskManager->workers[task->workerId]->tasks;
110 queue->queue = (union Data*)tasks; 110 queue->queue = (union Data*)tasks;
111 queue->data = (union Data*)task; 111 queue->data = (union Data*)task;
112 queue->next = next; 112 queue->next = next;
113 pthread_cond_signal(&taskManager->workers[task->workerId]->worker->CPUWorker.cond);
114 goto meta(context, tasks->put); 113 goto meta(context, tasks->put);
115 } 114 }
116 115
117 __code taskSend1_stub(struct Context* context) { 116 __code taskSend1_stub(struct Context* context) {
118 TaskManagerImpl* taskManager = (TaskManagerImpl*)GearImpl(context, TaskManager, taskManager); 117 TaskManagerImpl* taskManager = (TaskManagerImpl*)GearImpl(context, TaskManager, taskManager);
123 int i = loopCounter->i; 122 int i = loopCounter->i;
124 if (taskManager->cpu <= i && i < taskManager->maxCPU) { 123 if (taskManager->cpu <= i && i < taskManager->maxCPU) {
125 struct Queue* tasks = taskManagerImpl->workers[i]->tasks; 124 struct Queue* tasks = taskManagerImpl->workers[i]->tasks;
126 queue->queue = (union Data*)tasks; 125 queue->queue = (union Data*)tasks;
127 queue->data = NULL; 126 queue->data = NULL;
128 queue->next = next; 127 queue->next = C_shutdownTaskManager1;
129 goto meta(context, tasks->put); 128 goto meta(context, tasks->put);
130 pthread_join(taskManagerImpl->workers[i]->worker->CPUWorker.thread, NULL);
131 loopCounter->i++;
132 goto meta(context, C_shutdownTaskManager);
133 } 129 }
134 130
135 loopCounter->i = 0; 131 loopCounter->i = 0;
136 goto meta(context, taskManager->next); 132 goto meta(context, next);
137 } 133 }
138 134
139 __code shutdownTaskManager_stub(struct Context* context) { 135 __code shutdownTaskManager_stub(struct Context* context) {
140 TaskManagerImpl* taskManagerImpl = (TaskManagerImpl*)GearImpl(context, TaskManager, taskManager); 136 TaskManagerImpl* taskManagerImpl = (TaskManagerImpl*)GearImpl(context, TaskManager, taskManager);
141 goto shutdownTaskManager(context, Gearef(context, LoopCounter), Gearef(context, TaskManager), taskManagerImpl, Gearef(context, Queue), Gearef(context, TaskManager)->next); 137 goto shutdownTaskManager(context, Gearef(context, LoopCounter), &Gearef(context, TaskManager)->taskManager->TaskManager, taskManagerImpl, Gearef(context, Queue), Gearef(context, TaskManager)->next);
142 } 138 }
139
140 __code shutdownTaskManager1(struct LoopCounter* loopCounter, TaskManagerImpl* taskManagerImpl) {
141 int i = loopCounter->i;
142 pthread_join(taskManagerImpl->workers[i]->worker->CPUWorker.thread, NULL);
143 loopCounter->i++;
144 goto meta(context, C_shutdownTaskManager);
145 }
146
147 __code shutdownTaskManager1_stub(struct Context* context) {
148 TaskManagerImpl* taskManagerImpl = (TaskManagerImpl*)GearImpl(context, TaskManager, taskManager);
149 goto shutdownTaskManager1(context, Gearef(context, LoopCounter), taskManagerImpl);
150 }