Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Ensure the task is correctly destroyed when the host turns off during execute.
[simgrid.git] / teshsuite / msg / get_sender / get_sender.c
index 75e816f..821d5d8 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2009-2015. The SimGrid Team.
+/* Copyright (c) 2009-2019. The SimGrid Team.
  * All rights reserved.                                                     */
 
 /* This program is free software; you can redistribute it and/or modify it
@@ -12,7 +12,7 @@ static int sender_fun(int argc, char *argv[])
 {
   XBT_INFO("Sending");
   MSG_task_send(MSG_task_create("Blah", 0.0, 0.0, NULL), MSG_host_get_name(MSG_host_self()));
-  MSG_process_sleep(1.);     /* FIXME: if the sender exits before the receiver calls get_sender(), bad thing happens */
+  MSG_process_sleep(1.0);
   XBT_INFO("Exiting");
   return 0;
 }
@@ -24,22 +24,20 @@ static int receiver_fun(int argc, char *argv[])
   MSG_task_receive_with_timeout(&task, MSG_host_get_name(MSG_host_self()), DBL_MAX);
   xbt_assert(MSG_task_get_sender(task), "No sender received");
   XBT_INFO("Got a message sent by '%s'", MSG_process_get_name(MSG_task_get_sender(task)));
+  MSG_process_sleep(2.0);
+  XBT_INFO("Did I tell you that I got a message sent by '%s'?", MSG_process_get_name(MSG_task_get_sender(task)));
   MSG_task_destroy(task);
   return 0;
 }
 
 int main(int argc, char *argv[])
 {
-  msg_error_t res = MSG_OK;
-
   MSG_init(&argc, argv);
 
   MSG_create_environment(argv[1]);
 
-  MSG_function_register("send", &sender_fun);
-  MSG_function_register("receive", &receiver_fun);
-  MSG_launch_application(argv[2]);
-  res = MSG_main();
+  MSG_process_create("send", sender_fun, NULL, MSG_get_host_by_name("Tremblay"));
+  MSG_process_create("receive", receiver_fun, NULL, MSG_get_host_by_name("Tremblay"));
 
-  return res != MSG_OK;
+  return MSG_main() != MSG_OK;
 }