Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
reimplement this test in cpp to use standard threads
authorMartin Quinson <martin.quinson@ens-rennes.fr>
Sat, 5 Jan 2019 02:18:25 +0000 (03:18 +0100)
committerMartin Quinson <martin.quinson@ens-rennes.fr>
Sat, 5 Jan 2019 02:18:25 +0000 (03:18 +0100)
teshsuite/xbt/CMakeLists.txt
teshsuite/xbt/parallel_log_crashtest/parallel_log_crashtest.c [deleted file]
teshsuite/xbt/parallel_log_crashtest/parallel_log_crashtest.cpp [new file with mode: 0644]

index e59f345..0422f25 100644 (file)
@@ -1,4 +1,4 @@
-foreach(x cmdline log_large log_usage mallocator parallel_log_crashtest)
+foreach(x cmdline log_large log_usage mallocator)
   add_executable       (${x}  ${x}/${x}.c)
   target_link_libraries(${x}  simgrid)
   set_target_properties(${x}  PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${x})
   add_executable       (${x}  ${x}/${x}.c)
   target_link_libraries(${x}  simgrid)
   set_target_properties(${x}  PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${x})
@@ -7,7 +7,7 @@ foreach(x cmdline log_large log_usage mallocator parallel_log_crashtest)
   set(teshsuite_src ${teshsuite_src} ${CMAKE_CURRENT_SOURCE_DIR}/${x}/${x}.c)
 endforeach()
 
   set(teshsuite_src ${teshsuite_src} ${CMAKE_CURRENT_SOURCE_DIR}/${x}/${x}.c)
 endforeach()
 
-foreach(x parmap_bench parmap_test)
+foreach(x parallel_log_crashtest parmap_bench parmap_test)
   add_executable       (${x}  ${x}/${x}.cpp)
   target_link_libraries(${x}  simgrid)
   set_target_properties(${x}  PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${x})
   add_executable       (${x}  ${x}/${x}.cpp)
   target_link_libraries(${x}  simgrid)
   set_target_properties(${x}  PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${x})
diff --git a/teshsuite/xbt/parallel_log_crashtest/parallel_log_crashtest.c b/teshsuite/xbt/parallel_log_crashtest/parallel_log_crashtest.c
deleted file mode 100644 (file)
index b2962c1..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-/* synchro_crashtest -- tries to crash the logging mechanism by doing parallel logs*/
-
-/* Copyright (c) 2007-2018. The SimGrid Team. All rights reserved.          */
-
-/* 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. */
-
-#include "simgrid/msg.h"
-#include "xbt.h"
-
-#include <stdio.h> /* snprintf */
-
-XBT_LOG_NEW_DEFAULT_CATEGORY(synchro_crashtest, "Logs of this example");
-
-const int test_amount    = 99;  /* Up to 99 to not break the logs (and thus the testing mechanism) */
-const int crasher_amount = 99;  /* Up to 99 to not break the logs (and thus the testing mechanism) */
-int *id;                        /* to pass a pointer to the threads without race condition */
-
-int more_info = 0;              /* SET IT TO TRUE TO GET MORE INFO */
-
-/* Code ran by each thread */
-static void* crasher_thread(void *arg)
-{
-  int id = *(int *) arg;
-
-  for (int i = 0; i < test_amount; i++) {
-    if (more_info)
-      XBT_INFO("%03d (%02d|%02d|%02d|%02d|%02d|%02d|%02d|%02d|%02d)",
-             test_amount - i, id, id, id, id, id, id, id, id, id);
-    else
-      XBT_INFO("XXX (XX|XX|XX|XX|XX|XX|XX|XX|XX)");
-  }
-  return NULL;
-}
-
-static int crasher()
-{
-  /* initializations of the philosopher mechanisms */
-  id = xbt_new0(int, crasher_amount);
-  xbt_os_thread_t* crashers = xbt_new(xbt_os_thread_t, crasher_amount);
-
-  /* spawn threads */
-  for (int i = 0; i < crasher_amount; i++) {
-    id[i]       = i;
-    crashers[i] = xbt_os_thread_create(&crasher_thread, &id[i]);
-  }
-
-  /* wait for them */
-  for (int i = 0; i < crasher_amount; i++)
-    xbt_os_thread_join(crashers[i],NULL);
-
-  xbt_free(crashers);
-  xbt_free(id);
-
-  return 0;
-}
-
-int main(int argc, char *argv[])
-{
-  MSG_init(&argc, argv);
-  return crasher();
-}
diff --git a/teshsuite/xbt/parallel_log_crashtest/parallel_log_crashtest.cpp b/teshsuite/xbt/parallel_log_crashtest/parallel_log_crashtest.cpp
new file mode 100644 (file)
index 0000000..0464f26
--- /dev/null
@@ -0,0 +1,51 @@
+/* synchro_crashtest -- tries to crash the logging mechanism by doing parallel logs*/
+
+/* Copyright (c) 2007-2018. The SimGrid Team. All rights reserved.          */
+
+/* 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. */
+
+#include "simgrid/msg.h"
+#include <thread>
+
+XBT_LOG_NEW_DEFAULT_CATEGORY(synchro_crashtest, "Logs of this example");
+
+const int test_amount    = 99; /* Up to 99 to not break the logs (and thus the testing mechanism) */
+const int crasher_amount = 99; /* Up to 99 to not break the logs (and thus the testing mechanism) */
+
+int more_info = 0; /* SET IT TO TRUE TO GET MORE INFO */
+
+/* Code ran by each thread */
+static void* crasher_thread(void* arg)
+{
+  int id = *(int*)arg;
+
+  for (int i = 0; i < test_amount; i++) {
+    if (more_info)
+      XBT_INFO("%03d (%02d|%02d|%02d|%02d|%02d|%02d|%02d|%02d|%02d)", test_amount - i, id, id, id, id, id, id, id, id,
+               id);
+    else
+      XBT_INFO("XXX (XX|XX|XX|XX|XX|XX|XX|XX|XX)");
+  }
+  return NULL;
+}
+
+int main(int argc, char* argv[])
+{
+  MSG_init(&argc, argv);
+
+  int id[crasher_amount];
+  std::thread crashers[crasher_amount];
+
+  /* spawn threads */
+  for (int i = 0; i < crasher_amount; i++) {
+    id[i]       = i;
+    crashers[i] = std::thread(crasher_thread, &id[i]);
+  }
+
+  /* wait for them */
+  for (int i = 0; i < crasher_amount; i++)
+    crashers[i].join();
+
+  return 0;
+}