X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/7b6b6acf4ae4c0cec244594cdb804713ffac96b5..b8df87e176f27b25534f27d7e240defa32ca35bc:/examples/msg/mc/bugged2.c?ds=sidebyside diff --git a/examples/msg/mc/bugged2.c b/examples/msg/mc/bugged2.c index b7d2b65f2c..c659568b79 100644 --- a/examples/msg/mc/bugged2.c +++ b/examples/msg/mc/bugged2.c @@ -1,58 +1,76 @@ -#include -#include -#define N 3 - -XBT_LOG_NEW_DEFAULT_CATEGORY(example,"this example"); +/* Copyright (c) 2010-2019. The SimGrid Team. All rights reserved. */ -int server(int argc,char *argv[]); -int client(int argc,char *argv[]); +/* This program is free software; you can redistribute it and/or modify it + * under the terms of the license (GNU LGPL) which comes with this package. */ -int server(int argc,char *argv[]) -{ - m_task_t task1, task2; - long val1, val2; +/******************** Non-deterministic message ordering *********************/ +/* Server assumes a fixed order in the reception of messages from its clients */ +/* which is incorrect because the message ordering is non-deterministic */ +/******************************************************************************/ - MSG_task_receive(&task1,"mymailbox"); - val1 = (long)MSG_task_get_data(task1); - INFO1("Received %lu", val1); - - MSG_task_receive(&task2,"mymailbox"); - val2 = (long)MSG_task_get_data(task2); - INFO1("Received %lu", val2); +#include +#include +#define N 3 - MC_assert( min(val1, val2) == 1 ); +XBT_LOG_NEW_DEFAULT_CATEGORY(example, "this example"); - INFO0("OK"); +static int server(int argc, char *argv[]) +{ + msg_task_t task1 = NULL; + msg_task_t task2 = NULL; + + MSG_task_receive(&task1, "mymailbox"); + long val1 = xbt_str_parse_int(MSG_task_get_name(task1), "Task name is not a numerical ID: %s"); + MSG_task_destroy(task1); + task1 = NULL; + XBT_INFO("Received %ld", val1); + + MSG_task_receive(&task2, "mymailbox"); + long val2 = xbt_str_parse_int(MSG_task_get_name(task2), "Task name is not a numerical ID: %s"); + MSG_task_destroy(task2); + task2 = NULL; + XBT_INFO("Received %ld", val2); + + MC_assert(MIN(val1, val2) == 1); + + MSG_task_receive(&task1, "mymailbox"); + val1 = xbt_str_parse_int(MSG_task_get_name(task1), "Task name is not a numerical ID: %s"); + MSG_task_destroy(task1); + XBT_INFO("Received %ld", val1); + + MSG_task_receive(&task2, "mymailbox"); + val2 = xbt_str_parse_int(MSG_task_get_name(task2), "Task name is not a numerical ID: %s"); + MSG_task_destroy(task2); + XBT_INFO("Received %ld", val2); + + XBT_INFO("OK"); return 0; } -int client(int argc,char *argv[]) +static int client(int argc, char *argv[]) { - m_task_t task1 = MSG_task_create("task", 0, 10000, (void *) atol(argv[1])); - m_task_t task2 = MSG_task_create("task", 0, 10000, (void *) atol(argv[1])); + msg_task_t task1 = MSG_task_create(argv[1], 0, 10000, NULL); + msg_task_t task2 = MSG_task_create(argv[1], 0, 10000, NULL); - INFO1("Send %d!", atoi(argv[1])); - MSG_task_send(task1,"mymailbox"); + XBT_INFO("Send %s", argv[1]); + MSG_task_send(task1, "mymailbox"); - INFO1("Send %d!", atoi(argv[1])); - MSG_task_send(task2,"mymailbox"); + XBT_INFO("Send %s", argv[1]); + MSG_task_send(task2, "mymailbox"); return 0; } -int main(int argc,char*argv[]) +int main(int argc, char *argv[]) { - MSG_global_init(&argc,argv); + MSG_init(&argc, argv); MSG_create_environment("platform.xml"); MSG_function_register("server", server); - MSG_function_register("client", client); - MSG_launch_application("deploy_bugged2.xml"); MSG_main(); - return 0; }