Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Wait for isends, and destroy comms.
[simgrid.git] / teshsuite / msg / task_destroy_cancel.c
index 6daa0d2..c71f9cb 100644 (file)
@@ -27,6 +27,8 @@ int master(int argc, char *argv[])
   char mailbox[256];
   msg_task_t task = NULL;
   msg_comm_t comm = NULL;
   char mailbox[256];
   msg_task_t task = NULL;
   msg_comm_t comm = NULL;
+  xbt_ex_t ex;
+
   sprintf(mailbox, "jupi");
 
   task = MSG_task_create("normal", task_comp_size, task_comm_size, NULL);
   sprintf(mailbox, "jupi");
 
   task = MSG_task_create("normal", task_comp_size, task_comm_size, NULL);
@@ -45,11 +47,25 @@ int master(int argc, char *argv[])
   comm = MSG_task_isend(task, mailbox);
   XBT_INFO("Canceling task \"%s\" during comm", task->name);
   MSG_task_cancel(task);
   comm = MSG_task_isend(task, mailbox);
   XBT_INFO("Canceling task \"%s\" during comm", task->name);
   MSG_task_cancel(task);
+  TRY {
+    MSG_comm_wait(comm, -1);
+  }
+  CATCH (ex) {
+    xbt_ex_free(ex);
+    MSG_comm_destroy(comm);
+  }
 
   task = MSG_task_create("finalize", task_comp_size, task_comm_size, NULL);
   comm = MSG_task_isend(task, mailbox);
   XBT_INFO("Destroying task \"%s\" during comm", task->name);
   MSG_task_destroy(task);
 
   task = MSG_task_create("finalize", task_comp_size, task_comm_size, NULL);
   comm = MSG_task_isend(task, mailbox);
   XBT_INFO("Destroying task \"%s\" during comm", task->name);
   MSG_task_destroy(task);
+  TRY {
+    MSG_comm_wait(comm, -1);
+  }
+  CATCH (ex) {
+    xbt_ex_free(ex);
+    MSG_comm_destroy(comm);
+  }
 
   task = MSG_task_create("cancel", task_comp_size, task_comm_size, NULL);
   MSG_task_send_with_timeout(task, mailbox, timeout);
 
   task = MSG_task_create("cancel", task_comp_size, task_comm_size, NULL);
   MSG_task_send_with_timeout(task, mailbox, timeout);
@@ -77,8 +93,7 @@ int slave(int argc, char *argv[])
   _XBT_GNUC_UNUSED int res;
   int id = -1;
   char mailbox[80];
   _XBT_GNUC_UNUSED int res;
   int id = -1;
   char mailbox[80];
-  _XBT_GNUC_UNUSED int read;
-  double duration, start, end;
+  double start, end;
   sprintf(mailbox, "jupi");
 
   while (1) {
   sprintf(mailbox, "jupi");
 
   while (1) {
@@ -100,7 +115,6 @@ int slave(int argc, char *argv[])
       continue;
     }
 
       continue;
     }
 
-    duration = MSG_task_get_compute_duration(task);
     start = MSG_get_clock();
     MSG_task_execute(task);
     end = MSG_get_clock();
     start = MSG_get_clock();
     MSG_task_execute(task);
     end = MSG_get_clock();