X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/9b73466ada27682d1729f394549479da83ef4a99..719a77db362a51309e90a75253788223936b276c:/src/xbt/parmap.c diff --git a/src/xbt/parmap.c b/src/xbt/parmap.c index 3e56435315..1b0ab3d793 100644 --- a/src/xbt/parmap.c +++ b/src/xbt/parmap.c @@ -1,8 +1,9 @@ -/* Copyright (c) 2004-2005, 2007, 2009-2013. The SimGrid Team. +/* Copyright (c) 2004-2005, 2007, 2009-2014. The SimGrid Team. * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ + #include "internal_config.h" #include @@ -271,14 +272,14 @@ static void xbt_parmap_set_mode(xbt_parmap_t parmap, e_xbt_parmap_mode_t mode) */ void xbt_parmap_apply(xbt_parmap_t parmap, void_f_pvoid_t fun, xbt_dynar_t data) { - /* Assign resources to worker threads */ + /* Assign resources to worker threads (we are maestro here)*/ parmap->fun = fun; parmap->data = data; parmap->index = 0; - parmap->master_signal_f(parmap); - xbt_parmap_work(parmap); - parmap->master_wait_f(parmap); - XBT_DEBUG("Job done"); + parmap->master_signal_f(parmap); // maestro runs futex_wait to wake all the minions (the working threads) + xbt_parmap_work(parmap); // maestro works with its minions + parmap->master_wait_f(parmap); // When there is no more work to do, then maestro waits for the last minion to stop + XBT_DEBUG("Job done"); // ... and proceeds } /**