From: Navarrop Date: Fri, 16 Dec 2011 15:56:34 +0000 (+0100) Subject: Make sure this code is thread safe. X-Git-Tag: exp_20120216~237^2~6 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/6a45a0cb4c030a4dd81ee27636c2b8d2caba5834?hp=6dcde87625a4a148bffb674a18306813761509da Make sure this code is thread safe. --- diff --git a/examples/msg/gtnets/gtnets.c b/examples/msg/gtnets/gtnets.c index 18c1b74080..b60e800a29 100644 --- a/examples/msg/gtnets/gtnets.c +++ b/examples/msg/gtnets/gtnets.c @@ -155,8 +155,8 @@ int slave(int argc, char *argv[]) bool_printed = 1; for (id = 0; id < NTASKS; id++) { - if (gl_task_array[id] == NULL) { - } else if (gl_task_array[id] == task) { + if (gl_task_array[id] == NULL) continue; + if (gl_task_array[id] == task) { #ifdef HAVE_LATENCY_BOUND_TRACKING limited_latency = MSG_task_is_latency_bounded(gl_task_array[id]); if (limited_latency) { @@ -167,6 +167,8 @@ int slave(int argc, char *argv[]) ("===> Estimated Bw of FLOW[%d] : %f ; message from %s to %s with remaining : %f", id, gl_data_size[id] / elapsed_time, masternames[id], slavenames[id], 0.0); + MSG_task_destroy(gl_task_array[id]); + gl_task_array[id]=NULL; } else { remaining = MSG_task_get_remaining_communication(gl_task_array[id]); @@ -181,15 +183,19 @@ int slave(int argc, char *argv[]) ("===> Estimated Bw of FLOW[%d] : %f ; message from %s to %s with remaining : %f", id, (gl_data_size[id] - remaining) / elapsed_time, masternames[id], slavenames[id], remaining); + if(remaining==0) { + MSG_task_destroy(gl_task_array[id]); + gl_task_array[id]=NULL; + } } - } + bool_printed = 2; } char mark[100]; snprintf(mark, 100, "flow_%d_finished", trace_id); TRACE_mark("endmark", mark); - MSG_task_destroy(task); + if(bool_printed==2 && gl_task_array[trace_id]) MSG_task_destroy(gl_task_array[trace_id]); return 0; } /* end_of_slave */