1 /* Copyright (c) 2010-2020. The SimGrid Team. All rights reserved. */
3 /* This program is free software; you can redistribute it and/or modify it
4 * under the terms of the license (GNU LGPL) which comes with this package. */
6 #include "simgrid/msg.h"
8 static int master(XBT_ATTRIB_UNUSED int argc, XBT_ATTRIB_UNUSED char* argv[])
10 long number_of_tasks = 10;
11 long workers_count = 1;
13 for (int i = 0; i < number_of_tasks; i++) {
14 msg_task_t task = NULL;
16 /* creating task and setting its category */
18 task = MSG_task_create("task_compute", 10000000, 0, NULL);
19 MSG_task_set_category(task, "compute");
21 task = MSG_task_create("task_request", 10, 10, NULL);
22 MSG_task_set_category(task, "request");
24 task = MSG_task_create("task_data", 10, 10000000, NULL);
25 MSG_task_set_category(task, "data");
27 MSG_task_send(task, "master_mailbox");
30 for (int i = 0; i < workers_count; i++) {
31 msg_task_t finalize = MSG_task_create("finalize", 0, 1000, 0);
32 MSG_task_set_category(finalize, "finalize");
33 MSG_task_send(finalize, "master_mailbox");
39 static int worker(XBT_ATTRIB_UNUSED int argc, XBT_ATTRIB_UNUSED char* argv[])
41 msg_task_t task = NULL;
44 MSG_task_receive(&(task), "master_mailbox");
46 if (strcmp(MSG_task_get_name(task), "finalize") == 0) {
47 MSG_task_destroy(task);
51 MSG_task_execute(task);
52 MSG_task_destroy(task);
58 int main(int argc, char *argv[])
60 MSG_init(&argc, argv);
61 xbt_assert(argc > 1, "Usage: %s platform_file\n \tExample: %s msg_platform.xml\n", argv[0], argv[0]);
63 MSG_create_environment(argv[1]);
65 /* declaring user categories with RGB colors */
66 TRACE_category_with_color ("compute", "1 0 0"); //red
67 TRACE_category_with_color ("request", "0 1 0"); //green
68 TRACE_category_with_color ("data", "0 0 1"); //blue
69 TRACE_category_with_color ("finalize", "0 0 0");//black
71 MSG_process_create("master", master, NULL, MSG_host_by_name("Tremblay"));
72 MSG_process_create("worker", worker, NULL, MSG_host_by_name("Fafard"));