X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/eb3be59d63b0d199fa3f32b5a22553e44cfb917a..5cf8b774598c7ce08ee2c05b1c461b10d0707b75:/src/xbt/xbt_synchro.c diff --git a/src/xbt/xbt_synchro.c b/src/xbt/xbt_synchro.c index d72f8a6e9e..a2349d8449 100644 --- a/src/xbt/xbt_synchro.c +++ b/src/xbt/xbt_synchro.c @@ -10,26 +10,28 @@ #include "xbt/sysdep.h" #include "xbt/dynar.h" #include "xbt/synchro.h" +#include "xbt/xbt_os_thread.h" XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(xbt_sync); typedef struct { xbt_dynar_t data; int rank; void_f_int_pvoid_t function; - xbt_thread_t worker; + xbt_os_thread_t worker; } s_worker_data_t, *worker_data_t; static void worker_wait_n_free(void *w) { worker_data_t worker = *(worker_data_t *) w; - xbt_thread_join(worker->worker); + xbt_os_thread_join(worker->worker, NULL); xbt_free(worker); } -static void worker_wrapper(void *w) +static void *worker_wrapper(void *w) { worker_data_t me = (worker_data_t) w; me->function(me->rank, xbt_dynar_get_ptr(me->data, me->rank)); + return NULL; } void xbt_dynar_dopar(xbt_dynar_t datas, void_f_int_pvoid_t function) @@ -54,8 +56,7 @@ void xbt_dynar_dopar(xbt_dynar_t datas, void_f_int_pvoid_t function) w->rank = cursor; xbt_dynar_push(workers, &w); w->worker = - xbt_thread_create("dopar worker", worker_wrapper, w, - 1 /*joinable */ ); + xbt_os_thread_create("dopar worker", worker_wrapper, w, NULL); } /* wait them all */ xbt_dynar_free(&workers); @@ -66,8 +67,7 @@ void xbt_dynar_dopar(xbt_dynar_t datas, void_f_int_pvoid_t function) #include "xbt/synchro.h" XBT_TEST_SUITE("synchro", "Advanced synchronization mecanisms"); -XBT_LOG_EXTERNAL_CATEGORY(xbt_dyn); -XBT_LOG_DEFAULT_CATEGORY(xbt_dyn); +XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(xbt_dyn); static void add100(int rank, void *data) {