Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Add new entry in Release_Notes.
[simgrid.git] / src / kernel / actor / ActorImpl.hpp
index 8f6f640..69741ac 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2007-2022. The SimGrid Team. All rights reserved.          */
+/* Copyright (c) 2007-2023. 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. */
@@ -9,11 +9,16 @@
 #include "Simcall.hpp"
 #include "simgrid/kernel/Timer.hpp"
 #include "simgrid/s4u/Actor.hpp"
+#include "src/kernel/actor/Simcall.hpp"
 #include "xbt/PropertyHolder.hpp"
+
+#include <atomic>
 #include <boost/intrusive/list.hpp>
 #include <functional>
 #include <list>
 #include <map>
+#include <set>
+#include <unordered_set>
 #include <memory>
 
 namespace simgrid::kernel::actor {
@@ -21,22 +26,20 @@ class ProcessArg;
 
 /*------------------------- [ ActorIDTrait ] -------------------------*/
 class XBT_PUBLIC ActorIDTrait {
-  xbt::string name_;
-  aid_t pid_         = 0;
-  aid_t ppid_        = -1;
+  std::string name_;
+  aid_t pid_  = 0;
+  aid_t ppid_ = -1;
 
   static unsigned long maxpid_;
 
 public:
   explicit ActorIDTrait(const std::string& name, aid_t ppid);
-  const xbt::string& get_name() const { return name_; }
+  const std::string& get_name() const { return name_; }
   const char* get_cname() const { return name_.c_str(); }
   aid_t get_pid() const { return pid_; }
   aid_t get_ppid() const { return ppid_; }
 
   static unsigned long get_maxpid() { return maxpid_; }
-  // In MC mode, the application sends this pointer to the MC
-  static unsigned long* get_maxpid_addr() { return &maxpid_; }
 };
 
 /*------------------------- [ ActorRestartingTrait ] -------------------------*/
@@ -64,7 +67,7 @@ class XBT_PUBLIC ActorImpl : public xbt::PropertyHolder, public ActorIDTrait, pu
   friend activity::MailboxImpl;
 
 public:
-  ActorImpl(xbt::string name, s4u::Host* host, aid_t ppid);
+  ActorImpl(const std::string& name, s4u::Host* host, aid_t ppid);
   ActorImpl(const ActorImpl&) = delete;
   ActorImpl& operator=(const ActorImpl&) = delete;
   ~ActorImpl();
@@ -102,7 +105,7 @@ public:
   bool suspended_ = false;
 
   activity::ActivityImplPtr waiting_synchro_ = nullptr; /* the current blocking synchro if any */
-  std::list<activity::ActivityImplPtr> activities_;     /* the current non-blocking synchros */
+  std::set<activity::ActivityImplPtr> activities_;     /* the current non-blocking synchros */
   Simcall simcall_;
   /* list of functions executed when the actor dies */
   std::shared_ptr<std::vector<std::function<void(bool)>>> on_exit =