memory gets properly reclaimed. This call should be at the end of the
actor's function, not in a on_exit callback.
+.. _s4u_raii:
+
Memory Management
*****************
API Reference
*************
-.. _API_s4u_this_actor:
-
-==================================
-Interacting with the current actor
-==================================
-
-Static methods working on the current actor (see :ref:`API_s4u_Actor`).
+.. _API_s4u_simulation_object:
-.. doxygennamespace:: simgrid::s4u::this_actor
+==================
+Simulation objects
+==================
-.. _API_s4u_Activity:
+.. _API_s4u_Actor:
==============
-class Activity
+ class Actor
==============
-.. autodoxyclass:: simgrid::s4u::Activity
-
- **Known subclasses:**
- :ref:`Communications <API_s4u_Comm>` (started on Mailboxes and consuming links),
- :ref:`Executions <API_s4u_Exec>` (started on Host and consuming CPU resources)
- :ref:`I/O <API_s4u_Io>` (started on and consumming disks).
- See also the :ref:`section on activities <s4u_Activities>` above.
-
-Querying info about activities
-------------------------------
-
- .. autodoxymethod:: simgrid::s4u::Activity::get_remaining()
- .. autodoxymethod:: simgrid::s4u::Activity::get_state()
- .. autodoxymethod:: simgrid::s4u::Activity::set_remaining(double remains)
- .. autodoxymethod:: simgrid::s4u::Activity::get_impl
-
-Activities lifecycle
---------------------
-
- .. autodoxymethod:: simgrid::s4u::Activity::cancel
- .. autodoxymethod:: simgrid::s4u::Activity::start
- .. autodoxymethod:: simgrid::s4u::Activity::test
- .. autodoxymethod:: simgrid::s4u::Activity::wait
- .. autodoxymethod:: simgrid::s4u::Activity::wait_for
- .. autodoxymethod:: simgrid::s4u::Activity::wait_until(double time_limit)
-
-
-.. _API_s4u_Actor:
-
-===========
-class Actor
-===========
+.. autodoxyclass:: simgrid::s4u::Actor
.. doxygentypedef:: ActorPtr
.. doxygentypedef:: aid_t
-.. autodoxyclass:: simgrid::s4u::Actor
-
Creating actors
---------------
.. group-tab:: C++
+ .. code:: C++
+
+ #include <simgrid/s4u/Engine.hpp>
+
.. autodoxymethod:: simgrid::s4u::Actor::create(const std::string &name, s4u::Host *host, const std::function< void()> &code)
.. autodoxymethod:: simgrid::s4u::Actor::create(const std::string &name, s4u::Host *host, F code)
.. autodoxymethod:: simgrid::s4u::Actor::create(const std::string &name, s4u::Host *host, F code, Args... args)
.. group-tab:: Python
+ .. code:: Python
+
+ from simgrid import Actor
+
.. automethod:: simgrid.Actor.create
+ .. group-tab:: C
+
+ .. code:: C
+
+ #include <simgrid/actor.h>
+
+ .. doxygentypedef:: sg_actor_t
+ .. cpp:type:: const s4u_Actor* const_sg_actor_t
+
+ Pointer to a constant actor object.
+
+ .. autodoxymethod:: sg_actor_init(const char *name, sg_host_t host)
+ .. autodoxymethod:: sg_actor_start(sg_actor_t actor, xbt_main_func_t code, int argc, char **argv)
+
+ .. autodoxymethod:: sg_actor_attach(const char *name, void *data, sg_host_t host, xbt_dict_t properties)
+ .. autodoxymethod:: sg_actor_detach()
+
+ .. autodoxymethod:: sg_actor_ref(const_sg_actor_t actor)
+ .. autodoxymethod:: sg_actor_unref(const_sg_actor_t actor)
+
Searching specific actors
-------------------------
.. automethod:: simgrid.Actor.by_pid
.. automethod:: simgrid.Actor.self
+ .. group-tab:: C
+
+ .. autodoxymethod:: sg_actor_by_PID(aid_t pid)
+ .. autodoxymethod:: sg_actor_self()
+
Querying info about actors
--------------------------
.. autodoxymethod:: simgrid::s4u::Actor::set_property(const std::string &key, const std::string &value)
.. autodoxymethod:: simgrid::s4u::Actor::get_host
- .. autodoxymethod:: simgrid::s4u::Actor::migrate
+ .. autodoxymethod:: simgrid::s4u::Actor::set_host
.. autodoxymethod:: simgrid::s4u::Actor::get_refcount()
.. autodoxymethod:: simgrid::s4u::Actor::get_impl
.. autoattribute:: simgrid.Actor.pid
.. autoattribute:: simgrid.Actor.ppid
- .. automethod:: simgrid.Actor.migrate
+ .. group-tab:: C
+
+ .. autodoxymethod:: sg_actor_get_name(const_sg_actor_t actor)
+ .. autodoxymethod:: sg_actor_get_PID(const_sg_actor_t actor)
+ .. autodoxymethod:: sg_actor_get_PPID(const_sg_actor_t actor)
+ .. autodoxymethod:: sg_actor_get_properties(const_sg_actor_t actor)
+ .. autodoxymethod:: sg_actor_get_property_value(const_sg_actor_t actor, const char *name)
+
+ .. autodoxymethod:: sg_actor_get_host(const_sg_actor_t actor)
+ .. autodoxymethod:: sg_actor_set_host(sg_actor_t actor, sg_host_t host)
+
+ .. autodoxymethod:: sg_actor_data(const_sg_actor_t actor)
+ .. autodoxymethod:: sg_actor_data_set(sg_actor_t actor, void *userdata)
Suspending and resuming actors
------------------------------
.. automethod:: simgrid.Actor.suspend
.. automethod:: simgrid.Actor.is_suspended
-Killing actors
---------------
+ .. group-tab:: C
+
+ .. autodoxymethod:: sg_actor_suspend(sg_actor_t actor)
+ .. autodoxymethod:: sg_actor_resume(sg_actor_t actor)
+ .. autodoxymethod:: sg_actor_is_suspended(sg_actor_t actor)
+
+Specifying when actors should terminate
+---------------------------------------
.. tabs::
.. automethod:: simgrid.Actor.daemonize
.. automethod:: simgrid.Actor.is_daemon
+ .. group-tab:: C
+
+ .. autodoxymethod:: sg_actor_kill(sg_actor_t actor)
+ .. autodoxymethod:: sg_actor_kill_all()
+ .. autodoxymethod:: sg_actor_set_kill_time(sg_actor_t actor, double kill_time)
+
+ .. autodoxymethod:: sg_actor_restart(sg_actor_t actor)
+ .. autodoxymethod:: sg_actor_daemonize(sg_actor_t actor)
+
+.. _API_s4u_Actor_end:
+
Reacting to the end of actors
-----------------------------
.. automethod:: simgrid.Actor.join
+ .. group-tab:: C
+
+ .. autodoxymethod:: sg_actor_join(sg_actor_t actor, double timeout)
+ .. autodoxymethod:: sg_actor_set_auto_restart(sg_actor_t actor, int auto_restart)
+
Signals
-------
.. autodoxyvar:: simgrid::s4u::Actor::on_resume
.. autodoxyvar:: simgrid::s4u::Actor::on_sleep
.. autodoxyvar:: simgrid::s4u::Actor::on_wake_up
- .. autodoxyvar:: simgrid::s4u::Actor::on_migration_start
- .. autodoxyvar:: simgrid::s4u::Actor::on_migration_end
.. autodoxyvar:: simgrid::s4u::Actor::on_termination
.. autodoxyvar:: simgrid::s4u::Actor::on_destruction
-.. _API_s4u_Barrier:
+.. _API_s4u_this_actor:
-=============
-class Barrier
-=============
+====================
+ The current actor
+====================
-.. doxygentypedef:: BarrierPtr
+These functions can be used in your user code to interact with the actor
+currently running (the one retrieved with :cpp:func:`simgrid::s4u::Actor::self`).
+Using these functions can greatly improve the code readability.
-.. autodoxyclass:: simgrid::s4u::Barrier
+Querying info
+-------------
- .. tabs::
+.. tabs::
- .. group-tab:: C++
+ .. group-tab:: C++
- .. autodoxymethod:: simgrid::s4u::Barrier::Barrier(unsigned int count)
- .. autodoxymethod:: simgrid::s4u::Barrier::create(unsigned int expected_actors)
- .. autodoxymethod:: simgrid::s4u::Barrier::wait()
+ .. autodoxymethod:: simgrid::s4u::this_actor::get_cname()
+ .. autodoxymethod:: simgrid::s4u::this_actor::get_name()
+ .. autodoxymethod:: simgrid::s4u::this_actor::get_pid()
+ .. autodoxymethod:: simgrid::s4u::this_actor::get_ppid()
+ .. autodoxymethod:: simgrid::s4u::this_actor::is_maestro()
+ .. autodoxymethod:: simgrid::s4u::this_actor::get_host()
+ .. autodoxymethod:: simgrid::s4u::this_actor::set_host(Host *new_host)
-.. _API_s4u_Comm:
+ .. group-tab:: Python
-=========
-s4u::Comm
-=========
+ .. autofunction:: simgrid.this_actor.get_host
+ .. autofunction:: simgrid.this_actor.set_host
-.. doxygentypedef:: CommPtr
+ .. group-tab:: C
-.. doxygenclass:: simgrid::s4u::Comm
- :members:
- :protected-members:
- :undoc-members:
+ .. autodoxymethod:: sg_actor_self_data()
+ .. autodoxymethod:: sg_actor_self_data_set(void *data)
+ .. autodoxymethod:: sg_actor_self_get_name()
+ .. autodoxymethod:: sg_actor_self_get_pid()
+ .. autodoxymethod:: sg_actor_self_get_ppid()
+ .. autodoxymethod:: sg_host_self()
+ .. autodoxymethod:: sg_host_self_get_name()
-.. _API_s4u_ConditionVariable:
+Suspending and resuming
+-----------------------
-======================
-s4u::ConditionVariable
-======================
+.. tabs::
-.. doxygentypedef:: ConditionVariablePtr
+ .. group-tab:: C++
-.. doxygenclass:: simgrid::s4u::ConditionVariable
- :members:
- :protected-members:
- :undoc-members:
+ .. autodoxymethod:: simgrid::s4u::this_actor::suspend()
+ .. autodoxymethod:: simgrid::s4u::this_actor::yield()
-.. _API_s4u_Disk:
+ .. group-tab:: Python
-============
-s4u::Disk
-============
+ .. autofunction:: simgrid.this_actor.suspend
+ .. autofunction:: simgrid.this_actor.yield_
-.. doxygenclass:: simgrid::s4u::Disk
- :members:
- :protected-members:
- :undoc-members:
+Logging messages
+----------------
+
+.. tabs::
+
+ .. group-tab:: Python
+
+ .. autofunction:: simgrid.this_actor.info
+ .. autofunction:: simgrid.this_actor.error
+
+Sleeping
+--------
+
+.. tabs::
+
+ .. group-tab:: C++
+
+ .. autodoxymethod:: simgrid::s4u::this_actor::sleep_for(double duration)
+ .. autodoxymethod:: simgrid::s4u::this_actor::sleep_for(std::chrono::duration< Rep, Period > duration)
+ .. autodoxymethod:: simgrid::s4u::this_actor::sleep_until(const SimulationTimePoint< Duration > &wakeup_time)
+ .. autodoxymethod:: simgrid::s4u::this_actor::sleep_until(double wakeup_time)
+
+ .. group-tab:: Python
+
+ .. autofunction:: simgrid.this_actor.sleep_for
+ .. autofunction:: simgrid.this_actor.sleep_until
+
+ .. group-tab:: C
+
+ .. autodoxymethod:: sg_actor_sleep_for(double duration)
+
+Simulating executions
+---------------------
+
+Simulate the execution of some code on this actor. You can either simulate
+parallel or sequential code, and you can either block upon the termination of
+the execution, or start an asynchronous activity.
+
+.. tabs::
+
+ .. group-tab:: C++
+
+ .. autodoxymethod:: simgrid::s4u::this_actor::exec_async(double flops_amounts)
+ .. autodoxymethod:: simgrid::s4u::this_actor::exec_init(const std::vector< s4u::Host * > &hosts, const std::vector< double > &flops_amounts, const std::vector< double > &bytes_amounts)
+ .. autodoxymethod:: simgrid::s4u::this_actor::exec_init(double flops_amounts)
+ .. autodoxymethod:: simgrid::s4u::this_actor::execute(double flop)
+ .. autodoxymethod:: simgrid::s4u::this_actor::execute(double flop, double priority)
+ .. autodoxymethod:: simgrid::s4u::this_actor::parallel_execute(const std::vector< s4u::Host * > &hosts, const std::vector< double > &flops_amounts, const std::vector< double > &bytes_amounts)
+ .. autodoxymethod:: simgrid::s4u::this_actor::parallel_execute(const std::vector< s4u::Host * > &hosts, const std::vector< double > &flops_amounts, const std::vector< double > &bytes_amounts, double timeout)
+
+ .. group-tab:: Python
+
+ .. autofunction:: simgrid.this_actor.exec_init
+ .. autofunction:: simgrid.this_actor.execute
+
+ .. group-tab:: C
+
+ .. autodoxymethod:: sg_actor_self_execute(double flops)
+
+Exiting
+-------
+
+.. tabs::
+
+ .. group-tab:: C++
+
+ .. autodoxymethod:: simgrid::s4u::this_actor::exit()
+ .. autodoxymethod:: simgrid::s4u::this_actor::on_exit(const std::function< void(bool)> &fun)
+
+ .. group-tab:: Python
+
+ .. autofunction:: simgrid.this_actor.exit
+ .. autofunction:: simgrid.this_actor.on_exit
.. _API_s4u_Engine:
-===========
-s4u::Engine
-===========
+====================
+ Simulation Engine
+====================
-.. doxygenclass:: simgrid::s4u::Engine
- :members:
- :protected-members:
- :undoc-members:
+.. autodoxyclass:: simgrid::s4u::Engine
-.. _API_s4u_Exec:
+Initialization
+--------------
-=========
-s4u::Exec
-=========
+.. tabs::
-.. doxygentypedef:: ExecPtr
+ .. group-tab:: C++
-.. doxygenclass:: simgrid::s4u::Exec
- :members:
- :protected-members:
- :undoc-members:
+ .. autodoxymethod:: simgrid::s4u::Engine::Engine(int *argc, char **argv)
+ .. autodoxymethod:: simgrid::s4u::Engine::is_initialized()
+ .. autodoxymethod:: simgrid::s4u::Engine::shutdown()
+ .. autodoxymethod:: simgrid::s4u::Engine::set_config(const std::string &str)
-.. _API_s4u_ExecSeq:
+ .. autodoxymethod:: simgrid::s4u::Engine::load_deployment(const std::string &deploy)
+ .. autodoxymethod:: simgrid::s4u::Engine::load_platform(const std::string &platf)
+ .. autodoxymethod:: simgrid::s4u::Engine::register_actor(const std::string &name)
+ .. autodoxymethod:: simgrid::s4u::Engine::register_actor(const std::string &name, F code)
+ .. autodoxymethod:: simgrid::s4u::Engine::register_default(int(*code)(int, char **))
+ .. autodoxymethod:: simgrid::s4u::Engine::register_function(const std::string &name, int(*code)(int, char **))
+ .. autodoxymethod:: simgrid::s4u::Engine::register_function(const std::string &name, void(*code)(std::vector< std::string >))
-============
-s4u::ExecSeq
-============
+ .. group-tab:: Python
+
+ .. automethod:: simgrid.Engine.load_deployment
+ .. automethod:: simgrid.Engine.load_platform
+ .. automethod:: simgrid.Engine.register_actor
-.. doxygentypedef:: ExecSeqPtr
+ .. group-tab:: C
-.. doxygenclass:: simgrid::s4u::ExecSeq
+ .. autodoxymethod:: simgrid_init
+
+ .. autodoxymethod:: simgrid_load_deployment
+ .. autodoxymethod:: simgrid_load_platform
+ .. autodoxymethod:: simgrid_register_default
+ .. autodoxymethod:: simgrid_register_function
+
+Run the simulation
+------------------
+
+.. tabs::
+
+ .. group-tab:: C++
+
+ .. autodoxymethod:: simgrid::s4u::Engine::get_clock()
+ .. autodoxymethod:: simgrid::s4u::Engine::run()
+
+ .. group-tab:: Python
+
+ .. automethod:: simgrid.Engine.get_clock
+ .. automethod:: simgrid.Engine.run
+
+ .. group-tab:: C
+
+ .. autodoxymethod:: simgrid_get_clock
+ .. autodoxymethod:: simgrid_run
+
+Retrieving actors
+-----------------
+
+.. tabs::
+
+ .. group-tab:: C++
+
+ .. autodoxymethod:: simgrid::s4u::Engine::get_actor_count()
+ .. autodoxymethod:: simgrid::s4u::Engine::get_all_actors()
+ .. autodoxymethod:: simgrid::s4u::Engine::get_filtered_actors(const std::function< bool(ActorPtr)> &filter)
+
+ .. group-tab:: C
+
+ .. autodoxymethod:: simgrid_get_actor_count()
+
+Retrieving hosts
+----------------
+
+.. tabs::
+
+ .. group-tab:: C++
+
+ .. autodoxymethod:: simgrid::s4u::Engine::get_all_hosts()
+ .. autodoxymethod:: simgrid::s4u::Engine::get_host_count()
+ .. autodoxymethod:: simgrid::s4u::Engine::get_filtered_hosts(const std::function< bool(Host *)> &filter)
+ .. autodoxymethod:: simgrid::s4u::Engine::host_by_name(const std::string &name)
+ .. autodoxymethod:: simgrid::s4u::Engine::host_by_name_or_null(const std::string &name)
+
+ .. group-tab:: Python
+
+ .. automethod:: simgrid.Engine.get_all_hosts
+
+Retrieving links
+----------------
+
+.. tabs::
+
+ .. group-tab:: C++
+
+ .. autodoxymethod:: simgrid::s4u::Engine::get_all_links()
+ .. autodoxymethod:: simgrid::s4u::Engine::get_link_count()
+ .. autodoxymethod:: simgrid::s4u::Engine::get_filtered_links
+ .. autodoxymethod:: simgrid::s4u::Engine::link_by_name(const std::string &name)
+ .. autodoxymethod:: simgrid::s4u::Engine::link_by_name_or_null(const std::string &name)
+
+Interacting with the routing
+----------------------------
+
+.. tabs::
+
+ .. group-tab:: C++
+
+ .. autodoxymethod:: simgrid::s4u::Engine::get_all_netpoints()
+ .. autodoxymethod:: simgrid::s4u::Engine::get_filtered_netzones()
+ .. autodoxymethod:: simgrid::s4u::Engine::get_instance()
+ .. autodoxymethod:: simgrid::s4u::Engine::get_netzone_root()
+ .. autodoxymethod:: simgrid::s4u::Engine::netpoint_by_name_or_null(const std::string &name)
+ .. autodoxymethod:: simgrid::s4u::Engine::netzone_by_name_or_null(const std::string &name)
+ .. autodoxymethod:: simgrid::s4u::Engine::set_netzone_root(const NetZone *netzone)
+
+Signals
+-------
+
+.. tabs::
+
+ .. group-tab:: C++
+
+ .. autodoxyvar:: simgrid::s4u::Engine::on_deadlock
+ .. autodoxyvar:: simgrid::s4u::Engine::on_platform_created
+ .. autodoxyvar:: simgrid::s4u::Engine::on_platform_creation
+ .. autodoxyvar:: simgrid::s4u::Engine::on_simulation_end
+ .. autodoxyvar:: simgrid::s4u::Engine::on_time_advance
+
+.. _API_s4u_Mailbox:
+
+================
+ class Mailbox
+================
+
+Please also refer to the :ref:`full doc on s4u::Mailbox <s4u_mailbox>`.
+
+.. doxygenclass:: simgrid::s4u::Mailbox
:members:
:protected-members:
:undoc-members:
+.. _API_s4u_Resource:
-.. _API_s4u_ExecPar:
+=========
+Resources
+=========
-============
-s4u::ExecPar
-============
+.. _API_s4u_Disk:
-.. doxygentypedef:: ExecParPtr
+=============
+ class Disk
+=============
-.. doxygenclass:: simgrid::s4u::ExecPar
+.. doxygenclass:: simgrid::s4u::Disk
:members:
:protected-members:
:undoc-members:
+
+
.. _API_s4u_Host:
-=========
-s4u::Host
-=========
+=============
+ class Host
+=============
.. doxygenclass:: simgrid::s4u::Host
:members:
:protected-members:
:undoc-members:
-.. _API_s4u_Io:
+.. _API_s4u_Link:
-=======
-s4u::Io
-=======
+=============
+ class Link
+=============
-.. doxygentypedef:: IoPtr
+.. doxygenclass:: simgrid::s4u::Link
+ :members:
+ :protected-members:
+ :undoc-members:
-.. doxygenclass:: simgrid::s4u::Io
+.. _API_s4u_NetZone:
+
+================
+ class NetZone
+================
+
+.. doxygenclass:: simgrid::s4u::NetZone
:members:
:protected-members:
:undoc-members:
-.. _API_s4u_Link:
+.. _API_s4u_VirtualMachine:
-=========
-s4u::Link
-=========
+=======================
+ class VirtualMachine
+=======================
-.. doxygenclass:: simgrid::s4u::Link
+.. doxygenclass:: simgrid::s4u::VirtualMachine
:members:
:protected-members:
:undoc-members:
-.. _API_s4u_Mailbox:
+.. autodoxymethod:: sg_vm_create_core
+.. autodoxymethod:: sg_vm_create_multicore
+.. autodoxymethod:: sg_vm_get_name
+.. autodoxymethod:: sg_vm_get_pm
+.. autodoxymethod:: sg_vm_is_created
+.. autodoxymethod:: sg_vm_is_running
+.. autodoxymethod:: sg_vm_is_suspended
+.. autodoxymethod:: sg_vm_start
+.. autodoxymethod:: sg_vm_suspend
+.. autodoxymethod:: sg_vm_resume
+.. autodoxymethod:: sg_vm_shutdown
+.. autodoxymethod:: sg_vm_destroy
-============
-s4u::Mailbox
-============
+.. _API_s4u_Activity:
-Please also refer to the :ref:`full doc on s4u::Mailbox <s4u_mailbox>`.
+==============
+class Activity
+==============
-.. doxygenclass:: simgrid::s4u::Mailbox
+.. autodoxyclass:: simgrid::s4u::Activity
+
+ **Known subclasses:**
+ :ref:`Communications <API_s4u_Comm>` (started on Mailboxes and consuming links),
+ :ref:`Executions <API_s4u_Exec>` (started on Host and consuming CPU resources)
+ :ref:`I/O <API_s4u_Io>` (started on and consumming disks).
+ See also the :ref:`section on activities <s4u_Activities>` above.
+
+Querying info about activities
+------------------------------
+
+ .. autodoxymethod:: simgrid::s4u::Activity::get_remaining()
+ .. autodoxymethod:: simgrid::s4u::Activity::get_state()
+ .. autodoxymethod:: simgrid::s4u::Activity::set_remaining(double remains)
+ .. autodoxymethod:: simgrid::s4u::Activity::get_impl
+
+Activities lifecycle
+--------------------
+
+ .. autodoxymethod:: simgrid::s4u::Activity::start
+ .. autodoxymethod:: simgrid::s4u::Activity::cancel
+ .. autodoxymethod:: simgrid::s4u::Activity::test
+ .. autodoxymethod:: simgrid::s4u::Activity::wait
+ .. autodoxymethod:: simgrid::s4u::Activity::wait_for
+ .. autodoxymethod:: simgrid::s4u::Activity::wait_until(double time_limit)
+
+.. _API_s4u_Comm:
+
+=============
+ class Comm
+=============
+
+.. doxygentypedef:: CommPtr
+
+.. doxygenclass:: simgrid::s4u::Comm
:members:
:protected-members:
:undoc-members:
-.. _API_s4u_Mutex:
+.. _API_s4u_Exec:
-==========
-s4u::Mutex
-==========
+=============
+ class Exec
+=============
-.. doxygentypedef:: MutexPtr
+.. doxygentypedef:: ExecPtr
-.. doxygenclass:: simgrid::s4u::Mutex
+.. doxygenclass:: simgrid::s4u::Exec
:members:
:protected-members:
:undoc-members:
-.. _API_s4u_NetZone:
+.. _API_s4u_ExecSeq:
-============
-s4u::NetZone
-============
+==================
+ class ExecSeq
+==================
-.. doxygenclass:: simgrid::s4u::NetZone
+.. doxygentypedef:: ExecSeqPtr
+
+.. doxygenclass:: simgrid::s4u::ExecSeq
:members:
:protected-members:
:undoc-members:
-.. _API_s4u_Semaphore:
+.. _API_s4u_ExecPar:
-==============
-s4u::Semaphore
-==============
+==================
+ class ExecPar
+==================
-.. doxygentypedef:: SemaphorePtr
+.. doxygentypedef:: ExecParPtr
-.. doxygenclass:: simgrid::s4u::Semaphore
+.. doxygenclass:: simgrid::s4u::ExecPar
:members:
:protected-members:
:undoc-members:
-.. _API_s4u_VirtualMachine:
+.. _API_s4u_Io:
-===================
-s4u::VirtualMachine
-===================
+===========
+ class Io
+===========
-.. doxygenclass:: simgrid::s4u::VirtualMachine
+.. doxygentypedef:: IoPtr
+
+.. doxygenclass:: simgrid::s4u::Io
:members:
:protected-members:
:undoc-members:
-C API Reference
-***************
+.. _API_s4u_Synchronizations:
+
+=======================
+Synchronization Objects
+=======================
+
+.. _API_s4u_Mutex:
==============
-Main functions
+ Mutex
==============
-.. doxygenfunction:: simgrid_init
-.. doxygenfunction:: simgrid_get_clock
-.. doxygenfunction:: simgrid_load_deployment
-.. doxygenfunction:: simgrid_load_platform
-.. doxygenfunction:: simgrid_register_default
-.. doxygenfunction:: simgrid_register_function
-.. doxygenfunction:: simgrid_run
+.. autodoxyclass:: simgrid::s4u::Mutex
+
+Basic management
+----------------
+
+ .. tabs::
+
+ .. group-tab:: C++
+
+ .. code-block:: C++
+
+ #include <simgrid/s4u/Mutex.hpp>
+
+ .. doxygentypedef:: MutexPtr
+
+ .. autodoxymethod:: simgrid::s4u::Mutex::Mutex(kernel::activity::MutexImpl *mutex)
+ .. autodoxymethod:: simgrid::s4u::Mutex::create()
+ .. autodoxymethod:: simgrid::s4u::Mutex::~Mutex()
+
+ .. group-tab:: C
+
+ .. code-block:: C
+
+ #include <simgrid/mutex.h>
+
+ .. doxygentypedef:: sg_mutex_t
+ .. cpp:type:: const s4u_Mutex* const_sg_mutex_t
+
+ Pointer to a constant mutex object.
+
+ .. autodoxymethod:: sg_mutex_init()
+ .. autodoxymethod:: sg_mutex_destroy(const_sg_mutex_t mutex)
+
+Locking
+-------
+
+ .. tabs::
+
+ .. group-tab:: C++
+
+ .. autodoxymethod:: simgrid::s4u::Mutex::lock()
+ .. autodoxymethod:: simgrid::s4u::Mutex::try_lock()
+ .. autodoxymethod:: simgrid::s4u::Mutex::unlock()
+
+ .. group-tab:: C
+
+ .. autodoxymethod:: sg_mutex_lock(sg_mutex_t mutex)
+ .. autodoxymethod:: sg_mutex_try_lock(sg_mutex_t mutex)
+ .. autodoxymethod:: sg_mutex_unlock(sg_mutex_t mutex)
+
+.. _API_s4u_Barrier:
+
+================
+ Barrier
+================
+
+.. autodoxyclass:: simgrid::s4u::Barrier
+
+ .. tabs::
+
+ .. group-tab:: C++
+
+ .. code-block:: C++
+
+ #include <simgrid/s4u/Barrier.hpp>
+
+ .. doxygentypedef:: BarrierPtr
+
+ .. autodoxymethod:: simgrid::s4u::Barrier::Barrier(unsigned int expected_actors)
+ .. autodoxymethod:: simgrid::s4u::Barrier::create(unsigned int expected_actors)
+ .. autodoxymethod:: simgrid::s4u::Barrier::wait()
+
+ .. group-tab:: C
+
+ .. code-block:: C
+
+ #include <simgrid/barrier.hpp>
+
+ .. doxygentypedef:: sg_bar_t
+ .. cpp:type:: const s4u_Barrier* const_sg_bar_t
+
+ Pointer to a constant barrier object.
+
+ .. autodoxymethod:: sg_barrier_init(unsigned int count)
+ .. autodoxymethod:: sg_barrier_destroy(const_sg_bar_t bar)
+ .. autodoxymethod:: sg_barrier_wait(sg_bar_t bar)
+
+
+.. _API_s4u_ConditionVariable:
+
+==========================
+ Condition variable
+==========================
+
+.. autodoxyclass:: simgrid::s4u::ConditionVariable
+
+Basic management
+----------------
+
+ .. tabs::
+
+ .. group-tab:: C++
+
+ .. code-block:: C++
+
+ #include <simgrid/s4u/ConditionVariable.hpp>
+
+ .. doxygentypedef:: ConditionVariablePtr
+
+ .. autodoxymethod:: simgrid::s4u::ConditionVariable::create()
+
+ .. group-tab:: C
+
+ .. code-block:: C
+
+ #include <simgrid/cond.h>
+
+ .. doxygentypedef:: sg_cond_t
+ .. doxygenfunction:: sg_cond_init
+ .. doxygenfunction:: sg_cond_destroy
+
+Waiting and notifying
+---------------------
+
+ .. tabs::
+
+ .. group-tab:: C++
+
+ .. autodoxymethod:: simgrid::s4u::ConditionVariable::notify_all()
+ .. autodoxymethod:: simgrid::s4u::ConditionVariable::notify_one()
+ .. autodoxymethod:: simgrid::s4u::ConditionVariable::wait(s4u::MutexPtr lock)
+ .. autodoxymethod:: simgrid::s4u::ConditionVariable::wait(const std::unique_lock< s4u::Mutex > &lock)
+ .. autodoxymethod:: simgrid::s4u::ConditionVariable::wait(const std::unique_lock< Mutex > &lock, P pred)
+ .. autodoxymethod:: simgrid::s4u::ConditionVariable::wait_for(const std::unique_lock< s4u::Mutex > &lock, double duration)
+ .. autodoxymethod:: simgrid::s4u::ConditionVariable::wait_for(const std::unique_lock< s4u::Mutex > &lock, double duration, P pred)
+ .. autodoxymethod:: simgrid::s4u::ConditionVariable::wait_for(const std::unique_lock< s4u::Mutex > &lock, std::chrono::duration< Rep, Period > duration)
+ .. autodoxymethod:: simgrid::s4u::ConditionVariable::wait_for(const std::unique_lock< s4u::Mutex > &lock, std::chrono::duration< Rep, Period > duration, P pred)
+ .. autodoxymethod:: simgrid::s4u::ConditionVariable::wait_until(const std::unique_lock< s4u::Mutex > &lock, const SimulationTimePoint< Duration > &timeout_time)
+ .. autodoxymethod:: simgrid::s4u::ConditionVariable::wait_until(const std::unique_lock< s4u::Mutex > &lock, const SimulationTimePoint< Duration > &timeout_time, P pred)
+ .. autodoxymethod:: simgrid::s4u::ConditionVariable::wait_until(const std::unique_lock< s4u::Mutex > &lock, double timeout_time)
+ .. autodoxymethod:: simgrid::s4u::ConditionVariable::wait_until(const std::unique_lock< s4u::Mutex > &lock, double timeout_time, P pred)
+
+ .. group-tab:: C
+
+ .. doxygenfunction:: sg_cond_notify_all
+ .. doxygenfunction:: sg_cond_notify_one
+ .. doxygenfunction:: sg_cond_wait
+ .. doxygenfunction:: sg_cond_wait_for
+
+.. _API_s4u_Semaphore:
==================
-Condition Variable
+ Semaphore
==================
-See also the :ref:`C++ API <API_s4u_ConditionVariable>`.
+.. autodoxyclass:: simgrid::s4u::Semaphore
+
+
+Basic management
+----------------
+
+ .. tabs::
+
+ .. group-tab:: C++
+
+ .. code-block:: C++
+
+ #include <simgrid/s4u/Semaphore.hpp>
+
+ .. doxygentypedef:: SemaphorePtr
+ .. autodoxymethod:: simgrid::s4u::Semaphore::Semaphore(unsigned int initial_capacity)
+ .. autodoxymethod:: simgrid::s4u::Semaphore::~Semaphore()
+ .. autodoxymethod:: simgrid::s4u::Semaphore::create(unsigned int initial_capacity)
+
+ .. group-tab:: C
+
+ .. code-block:: C
-.. doxygenfunction:: sg_cond_init
-.. doxygenfunction:: sg_cond_notify_all
-.. doxygenfunction:: sg_cond_notify_one
-.. doxygenfunction:: sg_cond_wait
-.. doxygenfunction:: sg_cond_wait_for
+ #include <simgrid/semaphore.h>
+
+ .. doxygentypedef:: sg_sem_t
+ .. cpp:type:: const s4u_Semaphore* const_sg_sem_t
+
+ Pointer to a constant semaphore object.
+
+ .. autodoxymethod:: sg_sem_init(int initial_value)
+ .. autodoxymethod:: sg_sem_destroy(const_sg_sem_t sem)
+
+Locking
+-------
+
+ .. tabs::
+
+ .. group-tab:: C++
+
+ .. autodoxymethod:: simgrid::s4u::Semaphore::acquire()
+ .. autodoxymethod:: simgrid::s4u::Semaphore::acquire_timeout(double timeout)
+ .. autodoxymethod:: simgrid::s4u::Semaphore::get_capacity()
+ .. autodoxymethod:: simgrid::s4u::Semaphore::release()
+ .. autodoxymethod:: simgrid::s4u::Semaphore::would_block()
+
+ .. group-tab:: C
+
+ .. autodoxymethod:: sg_sem_acquire(sg_sem_t sem)
+ .. autodoxymethod:: sg_sem_acquire_timeout(sg_sem_t sem, double timeout)
+ .. autodoxymethod:: sg_sem_get_capacity(sg_sem_t sem)
+ .. autodoxymethod:: sg_sem_release(sg_sem_t sem)
+ .. autodoxymethod:: sg_sem_would_block(sg_sem_t sem)
Python API Reference
********************
.. automodule:: simgrid.this_actor
:members:
-===========
-Class Actor
-===========
-
-.. autoclass:: simgrid.Actor
- :members:
-
==========
Class Comm
==========
.. autoclass:: simgrid.Comm
:members:
-============
-Class Engine
-============
-
-.. autoclass:: simgrid.Engine
- :members:
-
==========
Class Exec
==========