Mercurial > hg > GearsTemplate
comparison src/parallel_execution/main.c @ 187:bacc37265386
main.o fixed
author | mir3636 |
---|---|
date | Thu, 15 Dec 2016 19:51:40 +0900 (2016-12-15) |
parents | dbc064c26b98 |
children | 119c035e0e36 |
comparison
equal
deleted
inserted
replaced
186:dbc064c26b98 | 187:bacc37265386 |
---|---|
182 | 182 |
183 if (i < worker->id) { | 183 if (i < worker->id) { |
184 struct Context* worker_context = &worker->contexts[i]; | 184 struct Context* worker_context = &worker->contexts[i]; |
185 worker_context->next = C_getTask1; | 185 worker_context->next = C_getTask1; |
186 worker_context->data[D_Tree] = context->data[D_Tree]; | 186 worker_context->data[D_Tree] = context->data[D_Tree]; |
187 worker_context->data[D_ActiveQueue] = context->data[D_ActiveQueue]; | 187 // worker_context->data[D_ActiveQueue] = context->data[D_ActiveQueue]; |
188 pthread_create(&worker_context->thread, NULL, (void*)&start_code, worker_context); | 188 pthread_create(&worker_context->thread, NULL, (void*)&start_code, worker_context); |
189 worker_context->thread_num = i; | 189 worker_context->thread_num = i; |
190 loopCounter->i++; | 190 loopCounter->i++; |
191 | 191 |
192 goto meta(context, C_createWorker); | 192 goto meta(context, C_createWorker); |
193 } | 193 } |
194 | 194 |
195 loopCounter->i = 0; | 195 loopCounter->i = 0; |
196 goto meta(context, TaskManager); | 196 goto meta(context, C_taskManager); |
197 } | 197 } |
198 | 198 |
199 __code createWorker_stub(struct Context* context) { | 199 __code createWorker_stub(struct Context* context) { |
200 goto createWorker(context, &context->data[D_LoopCounter]->loopCounter, &context->data[D_Worker]->Worker); | 200 goto createWorker(context, &context->data[D_LoopCounter]->loopCounter, &context->data[D_Worker]->Worker); |
201 } | 201 } |
205 | 205 |
206 if (i < worker->id) { | 206 if (i < worker->id) { |
207 pthread_join(worker->contexts[i].thread, NULL); | 207 pthread_join(worker->contexts[i].thread, NULL); |
208 loopCounter->i++; | 208 loopCounter->i++; |
209 | 209 |
210 goto meta(context, TaskManager); | 210 goto meta(context, C_taskManager); |
211 } | 211 } |
212 | 212 |
213 loopCounter->i = 0; | 213 loopCounter->i = 0; |
214 | 214 |
215 Time *t = &context->data[D_Time]->Time; | 215 Time *t = &context->data[D_Time]->Time; |
216 t->next = C_code2; | 216 t->next = C_code2; |
217 goto meta(context, EndTime); | 217 goto meta(context, C_end_time); |
218 } | 218 } |
219 | 219 |
220 __code taskManager_stub(struct Context* context) { | 220 __code taskManager_stub(struct Context* context) { |
221 goto taskManager(context, &context->data[D_LoopCounter]->loopCounter, &context->data[D_Worker]->Worker); | 221 goto taskManager(context, &context->data[D_LoopCounter]->loopCounter, &context->data[D_Worker]->Worker); |
222 } | 222 } |
241 for(int i=0; i<length; i++) | 241 for(int i=0; i<length; i++) |
242 array_ptr[i]=i; | 242 array_ptr[i]=i; |
243 | 243 |
244 struct Context* main_context = NEW(struct Context); | 244 struct Context* main_context = NEW(struct Context); |
245 initContext(main_context); | 245 initContext(main_context); |
246 main_context->next = CreateData1; | 246 main_context->next = C_createData1; |
247 | 247 |
248 struct Context* worker_contexts = NEWN(cpu_num, struct Context); | 248 struct Context* worker_contexts = NEWN(cpu_num, struct Context); |
249 | 249 |
250 struct Worker* worker = &main_context->data[D_Worker]->Worker; | 250 struct Worker* worker = &main_context->data[D_Worker]->Worker; |
251 worker->id = cpu_num; | 251 worker->id = cpu_num; |