+ // wake up senders/receivers
+ for (i = 0; i < smpi_mpi_comm_world.size; i++) {
+ if (SIMIX_process_is_suspended(smpi_sender_processes[i])) {
+ SIMIX_process_resume(smpi_sender_processes[i]);
+ }
+ if (SIMIX_process_is_suspended(smpi_receiver_processes[i])) {
+ SIMIX_process_resume(smpi_receiver_processes[i]);
+ }
+ }
+
+ // wait for senders/receivers to exit...
+ SIMIX_mutex_lock(init_mutex);
+ if (smpi_ready_count > 0) {
+ SIMIX_cond_wait(init_cond, init_mutex);
+ }
+ SIMIX_mutex_unlock(init_mutex);
+
+ SIMIX_mutex_destroy(init_mutex);