X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/8ea2649a94e38ff0333ca955277091e7d4af8dd4..9b0d45659b3ca3d1a18fa754bb04ed74396b3bd7:/src/smpi/smpi_sender.c diff --git a/src/smpi/smpi_sender.c b/src/smpi/smpi_sender.c index a03b42199b..0c84106236 100644 --- a/src/smpi/smpi_sender.c +++ b/src/smpi/smpi_sender.c @@ -94,6 +94,12 @@ int smpi_sender(int argc, char **argv) action = SIMIX_action_communicate(shost, dhost, "communication", request->datatype->size * request->count, -1.0); + message->action = action; + + SIMIX_mutex_lock(smpi_global->received_message_queues_mutexes[dindex]); + xbt_fifo_push(smpi_global->received_message_queues[dindex], message); + SIMIX_mutex_unlock(smpi_global->received_message_queues_mutexes[dindex]); + SIMIX_register_action_to_condition(action, request->cond); for ( @@ -110,10 +116,6 @@ int smpi_sender(int argc, char **argv) SIMIX_mutex_unlock(request->mutex); - SIMIX_mutex_lock(smpi_global->received_message_queues_mutexes[dindex]); - xbt_fifo_push(smpi_global->received_message_queues[dindex], message); - SIMIX_mutex_unlock(smpi_global->received_message_queues_mutexes[dindex]); - // wake up receiver if necessary receiver_process = smpi_global->receiver_processes[dindex]; if (SIMIX_process_is_suspended(receiver_process)) {