we will store the ongoing communications. It is also useful to have a
vector of mailboxes.
-.. literalinclude:: ../../examples/s4u/async-waitall/s4u-async-waitall.cpp
+.. literalinclude:: ../../examples/s4u/comm-waitall/s4u-comm-waitall.cpp
:language: c++
:start-after: init-begin
:end-before: init-end
with
:cpp:func:`s4u::Comm::wait_all() <simgrid::s4u::Comm::wait_all>`.
-.. literalinclude:: ../../examples/s4u/async-waitall/s4u-async-waitall.cpp
+.. literalinclude:: ../../examples/s4u/comm-waitall/s4u-comm-waitall.cpp
:language: c++
:start-after: put-begin
:end-before: put-end
and :cpp:func:`get() <simgrid::s4u::Mailbox::get()>` are posted).
In TCP, since you establish connections beforehand, the data starts to
flow as soon as the sender posts it, even if the receiver did not post
-its :cpp:func:`recv() <simgrid::s4u::Mailbox::recv()>` yet.
+its :cpp:func:`put() <simgrid::s4u::Mailbox::put()>` yet.
To model this in SimGrid, you can declare a specific receiver to a
given mailbox (with the function
that marked as permanent receiver, you should call
``mailbox->set_receiver(nullptr)`` by the end of the actors so that their
memory gets properly reclaimed. This call should be at the end of the
-actor's function, not in a on_exit callback.
+actor's function, not in an on_exit callback.
.. _s4u_raii:
Note that Mailboxes, Hosts and Links are not handled thought smart
pointers (yet?). This means that it is currently impossible to destroy a
-mailbox or a link. You can still destroy an host (but probably
+mailbox or a link. You can still destroy a host (but probably
shouldn't), using :cpp:func:`simgrid::s4u::Host::destroy`.
.. THE EXAMPLES
.. group-tab:: C
+ .. autodoxymethod:: sg_actor_create(const char *name, sg_host_t host, xbt_main_func_t code, int argc, const char *const *argv)
.. 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, const char *const *argv)
.. 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)
+ .. autodoxymethod:: sg_actor_get_data(const_sg_actor_t actor)
+ .. autodoxymethod:: sg_actor_set_data(sg_actor_t actor, void *userdata)
Suspending and resuming actors
------------------------------
.. group-tab:: C++
.. autodoxymethod:: simgrid::s4u::Actor::on_exit
- .. autodoxymethod:: simgrid::s4u::Actor::join()
- .. autodoxymethod:: simgrid::s4u::Actor::join(double timeout)
+ .. autodoxymethod:: simgrid::s4u::Actor::join() const
+ .. autodoxymethod:: simgrid::s4u::Actor::join(double timeout) const
.. autodoxymethod:: simgrid::s4u::Actor::set_auto_restart(bool autorestart)
.. group-tab:: Python
.. group-tab:: C
- .. autodoxymethod:: sg_actor_join(sg_actor_t actor, double timeout)
+ .. autodoxymethod:: sg_actor_join(const_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_creation
.. autodoxyvar:: simgrid::s4u::Actor::on_suspend
- .. cpp:var:: xbt::signal<void(const simgrid::s4u::Actor&, const simgrid::s4u::Host & previous_location)> Actor::on_host_change
-
- Signal fired when an actor is migrated from one host to another.
-
+ .. autodoxyvar:: simgrid::s4u::Actor::on_host_change
.. autodoxyvar:: simgrid::s4u::Actor::on_resume
.. autodoxyvar:: simgrid::s4u::Actor::on_sleep
.. autodoxyvar:: simgrid::s4u::Actor::on_wake_up
.. group-tab:: C
- .. autodoxymethod:: sg_actor_self_data()
- .. autodoxymethod:: sg_actor_self_data_set(void *data)
+ .. autodoxymethod:: sg_actor_self_get_data()
+ .. autodoxymethod:: sg_actor_self_set_data(void *data)
.. autodoxymethod:: sg_actor_self_get_name()
.. autodoxymethod:: sg_actor_self_get_pid()
.. autodoxymethod:: sg_actor_self_get_ppid()
.. autofunction:: simgrid.this_actor.suspend
.. autofunction:: simgrid.this_actor.yield_
+ .. group-tab:: C
+
+ .. autodoxymethod:: sg_actor_yield()
+
Logging messages
----------------
.. 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)
+ .. 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
.. group-tab:: C
- .. autodoxymethod:: sg_actor_self_execute(double flops)
+ .. autodoxymethod:: sg_actor_execute(double flops)
+ .. autodoxymethod:: sg_actor_execute_with_priority(double flops, double priority)
+ .. autodoxymethod:: sg_actor_exec_init(double computation_amount)
+ .. autodoxymethod:: sg_actor_exec_async(double computation_amount)
Exiting
-------
.. autodoxymethod:: simgrid::s4u::Engine::load_platform
.. 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(void(*code)(int, char **))
- .. autodoxymethod:: simgrid::s4u::Engine::register_function(const std::string &name, void(*code)(std::vector< std::string >))
- .. autodoxymethod:: simgrid::s4u::Engine::register_function(const std::string &name, void(*code)(int, char **))
+ .. autodoxymethod:: simgrid::s4u::Engine::register_default(const std::function< void(int, char **)> &code)
+ .. autodoxymethod:: simgrid::s4u::Engine::register_default(const kernel::actor::ActorCodeFactory &factory)
+
+ .. autodoxymethod:: simgrid::s4u::Engine::register_function(const std::string &name, const std::function< void(int, char **)> &code)
+ .. autodoxymethod:: simgrid::s4u::Engine::register_function(const std::string &name, const std::function< void(std::vector< std::string >)> &code)
+ .. autodoxymethod:: simgrid::s4u::Engine::register_function(const std::string &name, const kernel::actor::ActorCodeFactory &factory)
.. group-tab:: Python
.. automethod:: simgrid.Mailbox.by_name
+ .. code-block:: C
+
+ #include <simgrid/s4u/mailbox.h>
+
+ .. autodoxymethod:: sg_mailbox_by_name(const char *alias)
+
+ .. group-tab:: C
+
Querying info
-------------
.. automethod:: simgrid.Mailbox.put
.. automethod:: simgrid.Mailbox.put_async
+ .. group-tab: C
+
+ .. autodoxymethod:: sg_mailbox_put(sg_mailbox_t mailbox, void *payload, long simulated_size_in_bytes)
+ .. autodoxymethod:: sg_mailbox_put_init(sg_mailbox_t mailbox, void *payload, long simulated_size_in_bytes)
+ .. autodoxymethod:: sg_mailbox_put_async(sg_mailbox_t mailbox, void *payload, long simulated_size_in_bytes)
+
Receiving data
--------------
.. autodoxymethod:: simgrid::s4u::Mailbox::front
.. autodoxymethod:: simgrid::s4u::Mailbox::get()
.. autodoxymethod:: simgrid::s4u::Mailbox::get(double timeout)
- .. autodoxymethod:: simgrid::s4u::Mailbox::get_async(void **data)
+ .. autodoxymethod:: simgrid::s4u::Mailbox::get_async(T **data)
.. autodoxymethod:: simgrid::s4u::Mailbox::get_init()
.. autodoxymethod:: simgrid::s4u::Mailbox::iprobe(int type, bool(*match_fun)(void *, void *, kernel::activity::CommImpl *), void *data)
.. autodoxymethod:: simgrid::s4u::Mailbox::listen
.. group-tab:: C
+ .. autodoxymethod:: sg_mailbox_get(sg_mailbox_t mailbox)
+ .. autodoxymethod:: sg_mailbox_get_async(sg_mailbox_t mailbox, void **data)
+ .. autodoxymethod:: sg_mailbox_get_name(const_sg_mailbox_t mailbox)
.. autodoxymethod:: sg_mailbox_listen(const char *alias)
Receiving actor
.. autodoxymethod:: sg_host_core_count(const_sg_host_t host)
.. autodoxymethod:: sg_host_dump(const_sg_host_t ws)
.. autodoxymethod:: sg_host_get_name(const_sg_host_t host)
- .. autodoxymethod:: sg_host_load(const_sg_host_t host)
- .. autodoxymethod:: sg_host_speed(const_sg_host_t host)
+ .. autodoxymethod:: sg_host_get_load(const_sg_host_t host)
+ .. autodoxymethod:: sg_host_get_speed(const_sg_host_t host)
User data and properties
------------------------
.. autodoxymethod:: simgrid::s4u::Host::get_properties() const
.. autodoxymethod:: simgrid::s4u::Host::get_property(const std::string &key) const
- .. autodoxymethod:: simgrid::s4u::Host::set_properties(const std::map< std::string, std::string > &properties)
+ .. autodoxymethod:: simgrid::s4u::Host::set_properties(const std::unordered_map< std::string, std::string > &properties)
.. autodoxymethod:: simgrid::s4u::Host::set_property(const std::string &key, const std::string &value)
.. group-tab:: C
.. group-tab:: C++
- .. autodoxymethod:: simgrid::s4u::Host::add_disk(Disk *disk)
+ .. autodoxymethod:: simgrid::s4u::Host::add_disk(const Disk *disk)
.. autodoxymethod:: simgrid::s4u::Host::get_actor_count() const
.. autodoxymethod:: simgrid::s4u::Host::get_all_actors() const
.. autodoxymethod:: simgrid::s4u::Host::get_disks() const
.. group-tab:: C
- .. autodoxymethod:: sg_host_route(const_sg_host_t from, const_sg_host_t to, xbt_dynar_t links)
- .. autodoxymethod:: sg_host_route_bandwidth(const_sg_host_t from, const_sg_host_t to)
- .. autodoxymethod:: sg_host_route_latency(const_sg_host_t from, const_sg_host_t to)
+ .. autodoxymethod:: sg_host_get_route(const_sg_host_t from, const_sg_host_t to, xbt_dynar_t links)
+ .. autodoxymethod:: sg_host_get_route_bandwidth(const_sg_host_t from, const_sg_host_t to)
+ .. autodoxymethod:: sg_host_get_route_latency(const_sg_host_t from, const_sg_host_t to)
.. autodoxymethod:: sg_host_sendto(sg_host_t from, sg_host_t to, double byte_amount)
Signals
.. group-tab:: C
- .. autodoxymethod:: sg_link_bandwidth(const_sg_link_t link)
+ .. autodoxymethod:: sg_link_get_bandwidth(const_sg_link_t link)
+ .. autodoxymethod:: sg_link_get_latency(const_sg_link_t link)
+ .. autodoxymethod:: sg_link_get_name(const_sg_link_t link)
.. autodoxymethod:: sg_link_is_shared(const_sg_link_t link)
- .. autodoxymethod:: sg_link_latency(const_sg_link_t link)
- .. autodoxymethod:: sg_link_name(const_sg_link_t link)
Modifying characteristics
-------------------------
.. autodoxymethod:: simgrid::s4u::Link::set_bandwidth(double value)
.. autodoxymethod:: simgrid::s4u::Link::set_latency(double value)
+ .. group-tab:: C
+
+ .. autodoxymethod:: sg_link_set_bandwidth(sg_link_t link, double value)
+ .. autodoxymethod:: sg_link_set_latency(sg_link_t link, double value)
+
User data and properties
------------------------
.. group-tab:: C
- .. autodoxymethod:: sg_link_data(const_sg_link_t link)
- .. autodoxymethod:: sg_link_data_set(sg_link_t link, void *data)
+ .. autodoxymethod:: sg_link_get_data(const_sg_link_t link)
+ .. autodoxymethod:: sg_link_set_data(sg_link_t link, void *data)
On/Off
------
.. group-tab:: C++
.. autodoxyvar:: simgrid::s4u::Link::on_bandwidth_change
- .. cpp:var:: xbt::signal<void(kernel::resource::NetworkAction&, Host* src, Host* dst)> Link::on_communicate
+ .. autodoxyvar:: simgrid::s4u::Link::on_communicate
.. autodoxyvar:: simgrid::s4u::Link::on_communication_state_change
.. autodoxyvar:: simgrid::s4u::Link::on_creation
.. autodoxyvar:: simgrid::s4u::Link::on_destruction
.. autodoxymethod:: simgrid::s4u::VirtualMachine::get_pm() const
.. autodoxymethod:: simgrid::s4u::VirtualMachine::get_ramsize() const
- .. autodoxymethod:: simgrid::s4u::VirtualMachine::get_state()
+ .. autodoxymethod:: simgrid::s4u::VirtualMachine::get_state() const
.. autodoxymethod:: simgrid::s4u::VirtualMachine::set_bound(double bound)
.. autodoxymethod:: simgrid::s4u::VirtualMachine::set_pm(Host *pm)
.. autodoxymethod:: simgrid::s4u::Comm::set_src_data(void *buff)
.. autodoxymethod:: simgrid::s4u::Comm::set_src_data(void *buff, size_t size)
.. autodoxymethod:: simgrid::s4u::Comm::set_src_data_size(size_t size)
- .. autodoxymethod:: simgrid::s4u::Comm::set_tracing_category(const std::string &category)
Life cycle
----------
.. group-tab:: C++
.. autodoxyvar:: simgrid::s4u::Comm::on_completion
- .. autodoxyvar:: simgrid::s4u::Comm::on_receiver_start
- .. autodoxyvar:: simgrid::s4u::Comm::on_sender_start
+ .. autodoxyvar:: simgrid::s4u::Comm::on_start
.. _API_s4u_Exec:
.. group-tab:: C++
- .. cpp:var:: xbt::signal<void(Actor const&, Exec const&)> Exec::on_completion
- .. cpp:var:: xbt::signal<void(Actor const&, Exec const&)> Exec::on_start
+ .. autodoxyvar:: simgrid::s4u::Exec::on_start
+ .. autodoxyvar:: simgrid::s4u::Exec::on_completion
.. _API_s4u_Io:
.. autodoxymethod:: simgrid::s4u::Semaphore::acquire()
.. autodoxymethod:: simgrid::s4u::Semaphore::acquire_timeout(double timeout)
- .. autodoxymethod:: simgrid::s4u::Semaphore::get_capacity()
+ .. autodoxymethod:: simgrid::s4u::Semaphore::get_capacity() const
.. autodoxymethod:: simgrid::s4u::Semaphore::release()
- .. autodoxymethod:: simgrid::s4u::Semaphore::would_block()
+ .. autodoxymethod:: simgrid::s4u::Semaphore::would_block() const
.. 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_get_capacity(const_sg_sem_t sem)
.. autodoxymethod:: sg_sem_release(sg_sem_t sem)
- .. autodoxymethod:: sg_sem_would_block(sg_sem_t sem)
+ .. autodoxymethod:: sg_sem_would_block(const_sg_sem_t sem)
.. |hr| raw:: html