Mercurial > hg > Members > Moririn
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 } |