Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Replace static function by a lambda.
authorArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Wed, 23 Nov 2022 14:29:39 +0000 (15:29 +0100)
committerArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Wed, 23 Nov 2022 16:25:36 +0000 (17:25 +0100)
src/sthread/sthread_impl.cpp

index 5ec2a04..433f26a 100644 (file)
@@ -61,17 +61,6 @@ struct sthread_mutex {
   s4u_Mutex* mutex;
 };
 
-static void thread_create_wrapper(void* (*user_function)(void*), void* param)
-{
-#if HAVE_SMPI
-  if (SMPI_is_inited())
-    SMPI_thread_create();
-#endif
-  sthread_enable();
-  user_function(param);
-  sthread_disable();
-}
-
 int sthread_create(unsigned long int* thread, const void* /*pthread_attr_t* attr*/, void* (*start_routine)(void*),
                    void* arg)
 {
@@ -84,7 +73,18 @@ int sthread_create(unsigned long int* thread, const void* /*pthread_attr_t* attr
     MPI_Comm_rank(MPI_COMM_WORLD, &rank);
 #endif
   std::string name    = simgrid::xbt::string_printf("%d:%d", rank, TID);
-  sg4::ActorPtr actor = sg4::Actor::create(name, lilibeth, thread_create_wrapper, start_routine, arg);
+  sg4::ActorPtr actor = sg4::Actor::create(
+      name, lilibeth,
+      [](auto* user_function, auto* param) {
+#if HAVE_SMPI
+        if (SMPI_is_inited())
+          SMPI_thread_create();
+#endif
+        sthread_enable();
+        user_function(param);
+        sthread_disable();
+      },
+      start_routine, arg);
 
   intrusive_ptr_add_ref(actor.get());
   *thread = reinterpret_cast<unsigned long>(actor.get());