X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/1ebfc270d46a90d0a0b3ba49c9bc3e01bed57caf..07034eaa7d8fbbc23d0918c256174e5356a330d2:/src/simix/smx_context_thread.c diff --git a/src/simix/smx_context_thread.c b/src/simix/smx_context_thread.c index e1fdeccd66..b2ec07573e 100644 --- a/src/simix/smx_context_thread.c +++ b/src/simix/smx_context_thread.c @@ -145,11 +145,13 @@ static void smx_ctx_thread_suspend(smx_context_t context) static void smx_ctx_thread_runall_serial(xbt_dynar_t processes) { smx_process_t process; - while (xbt_dynar_length(processes)){ - process = xbt_dynar_pop_as(processes,smx_process_t); + unsigned int cursor; + + xbt_dynar_foreach(processes, cursor, process) { xbt_os_sem_release(((smx_ctx_thread_t) process->context)->begin); xbt_os_sem_acquire(((smx_ctx_thread_t) process->context)->end); } + xbt_dynar_reset(processes); } static void smx_ctx_thread_runall_parallel(xbt_dynar_t processes) @@ -160,10 +162,10 @@ static void smx_ctx_thread_runall_parallel(xbt_dynar_t processes) xbt_dynar_foreach(processes, index, process) xbt_os_sem_release(((smx_ctx_thread_t) process->context)->begin); - while(xbt_dynar_length(processes)){ - process = xbt_dynar_pop_as(processes,smx_process_t); + xbt_dynar_foreach(processes, index, process) { xbt_os_sem_acquire(((smx_ctx_thread_t) process->context)->end); } + xbt_dynar_reset(processes); } static smx_context_t smx_ctx_thread_self(void)