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);
task = MSG_task_create("cancel directly", task_comp_size, task_comm_size, NULL);
XBT_INFO("Canceling task \"%s\" directly", task->name);
MSG_task_cancel(task);
+ MSG_task_destroy(task);
task = MSG_task_create("destroy directly", task_comp_size, task_comm_size, NULL);
XBT_INFO("Destroying task \"%s\" directly", task->name);
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);
+ }
+ 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);
static int worker_main(int argc, char *argv[])
{
msg_task_t task = MSG_process_get_data(MSG_process_self());
+ msg_error_t res;
XBT_INFO("Start %s", task->name);
- MSG_task_execute(task);
- XBT_INFO("Task done");
+ res = MSG_task_execute(task);
+ XBT_INFO("Task %s", res == MSG_OK ? "done" : "failed");
+ MSG_task_destroy(task);
return 0;
}