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;