for original thread to become worker zero
authorjjenista <jjenista>
Fri, 29 Oct 2010 18:29:48 +0000 (18:29 +0000)
committerjjenista <jjenista>
Fri, 29 Oct 2010 18:29:48 +0000 (18:29 +0000)
Robust/src/Runtime/workschedule.c

index 45714f255d7bda375e6fd25ad29d61714c4f5700..4cfb5e8f1e3de0b97f34df3a38c766ee989a7692 100644 (file)
@@ -337,6 +337,8 @@ void workScheduleInit( int numProcessors,
   pthread_attr_setdetachstate( &attr, 
                                PTHREAD_CREATE_JOINABLE );
 
+  workerDataArray[0].id = 0;
+
   for( i = 1; i < numWorkSchedWorkers; ++i ) {
 
     workerDataArray[i].id = i;
@@ -370,7 +372,10 @@ void workScheduleSubmit( void* workUnit ) {
 void workScheduleBegin() {
   int i;
 
-  // wait for all workers to exit gracefully
+  // original thread becomes a worker
+  workerMain( (void*) &(workerDataArray[0]) );
+
+  // then wait for all other workers to exit gracefully
   for( i = 1; i < numWorkSchedWorkers; ++i ) {
     pthread_join( workerDataArray[i].workerThread, NULL );
   }