X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/1fd15d2c07a6c04bc8dd130ea48abd79ae714731..839877aee607c198ffda1d836d72976831819825:/src/xbt/parmap.c diff --git a/src/xbt/parmap.c b/src/xbt/parmap.c index 61c94f8f67..3012cabce4 100644 --- a/src/xbt/parmap.c +++ b/src/xbt/parmap.c @@ -31,10 +31,6 @@ xbt_parmap_t xbt_parmap_new(unsigned int num_workers) /* Initialize the thread pool data structure */ xbt_parmap_t parmap = xbt_new0(s_xbt_parmap_t, 1); - #ifndef HAVE_FUTEX_H - parmap->workers_ready->mutex = xbt_os_mutex_init(); - parmap->workers_ready->cond = xbt_os_cond_init(); - #endif parmap->num_workers = num_workers; parmap->status = PARMAP_WORK; @@ -42,7 +38,10 @@ xbt_parmap_t xbt_parmap_new(unsigned int num_workers) xbt_barrier_init(parmap->workers_ready, num_workers + 1); parmap->workers_done = xbt_new0(s_xbt_barrier_t, 1); xbt_barrier_init(parmap->workers_done, num_workers + 1); - +#ifndef HAVE_FUTEX_H + parmap->workers_ready->mutex = xbt_os_mutex_init(); + parmap->workers_ready->cond = xbt_os_cond_init(); +#endif /* Create the pool of worker threads */ for(i=0; i < num_workers; i++){ worker = xbt_os_thread_create(NULL, _xbt_parmap_worker_main, parmap, NULL); @@ -61,7 +60,10 @@ void xbt_parmap_destroy(xbt_parmap_t parmap) xbt_barrier_wait(parmap->workers_ready); DEBUG0("Kill job sent"); xbt_barrier_wait(parmap->workers_done); - +#ifndef HAVE_FUTEX_H + xbt_os_mutex_destroy(parmap->workers_ready->mutex); + xbt_os_cond_destroy(parmap->workers_ready->cond); +#endif xbt_free(parmap->workers_ready); xbt_free(parmap->workers_done); xbt_free(parmap); @@ -170,23 +172,16 @@ void xbt_barrier_init(xbt_barrier_t barrier, unsigned int threads_to_wait) #else void xbt_barrier_wait(xbt_barrier_t barrier) { - int myflag = 0; - unsigned int mycount = 0; - xbt_os_mutex_acquire(barrier->mutex); - //pthread_mutex_lock(&barrier->mutex); barrier->thread_count++; if(barrier->thread_count < barrier->threads_to_wait){ xbt_os_cond_wait(barrier->cond,barrier->mutex); - //pthread_cond_wait(&barrier->mutex,&barrier->cond); }else{ barrier->thread_count = 0; xbt_os_cond_broadcast(barrier->cond); - //pthread_cond_broadcast(&barrier->mutex, &barrier->cond); } xbt_os_mutex_release(barrier->mutex); - //pthread_mutex_unlock(&barrier->mutex); } #endif