foreach (example actions-comm actions-storage
- actor-create actor-daemon actor-kill actor-migration actor-suspend
+ actor-create actor-daemon actor-execute actor-kill actor-lifetime actor-migration actor-suspend actor-priority
app-masterworker app-pingpong app-token-ring
- async-wait async-waitany async-waitall
+ async-wait async-waitany async-waitall actor-yield
+ energy-link
plugin-hostload io mutex)
add_executable (s4u-${example} ${example}/s4u-${example}.cpp)
target_link_libraries(s4u-${example} simgrid)
set(examples_src ${examples_src} PARENT_SCOPE)
set(tesh_files ${tesh_files} ${CMAKE_CURRENT_SOURCE_DIR}/app-bittorrent/s4u-app-bittorrent.tesh
${CMAKE_CURRENT_SOURCE_DIR}/dht-chord/s4u-dht-chord.tesh
+ ${CMAKE_CURRENT_SOURCE_DIR}/actor-yield/s4u-actor-yield.tesh
+ ${CMAKE_CURRENT_SOURCE_DIR}/actor-priority/s4u-actor-priority.tesh
+ ${CMAKE_CURRENT_SOURCE_DIR}/actor-lifetime/s4u-actor-lifetime.tesh
${CMAKE_CURRENT_SOURCE_DIR}/async-wait/s4u-async-wait.tesh
${CMAKE_CURRENT_SOURCE_DIR}/async-waitany/s4u-async-waitany.tesh
- ${CMAKE_CURRENT_SOURCE_DIR}/async-waitall/s4u-async-waitall.tesh PARENT_SCOPE)
+ ${CMAKE_CURRENT_SOURCE_DIR}/async-waitall/s4u-async-waitall.tesh
+ ${CMAKE_CURRENT_SOURCE_DIR}/actor-execute/s4u-actor-execute.tesh
+ PARENT_SCOPE)
set(xml_files ${xml_files} ${CMAKE_CURRENT_SOURCE_DIR}/actions-comm/s4u-actions-comm-split_d.xml
${CMAKE_CURRENT_SOURCE_DIR}/actions-comm/s4u-actions-comm_d.xml
${CMAKE_CURRENT_SOURCE_DIR}/actions-storage/s4u-actions-storage_d.xml
${CMAKE_CURRENT_SOURCE_DIR}/async-waitany/s4u-async-waitany_d.xml
${CMAKE_CURRENT_SOURCE_DIR}/async-waitall/s4u-async-waitall_d.xml
${CMAKE_CURRENT_SOURCE_DIR}/async-wait/s4u-async-wait_d.xml
- ${CMAKE_CURRENT_SOURCE_DIR}/dht-chord/s4u-dht-chord_d.xml PARENT_SCOPE)
+ ${CMAKE_CURRENT_SOURCE_DIR}/actor-yield/s4u-actor-yield_d.xml
+ ${CMAKE_CURRENT_SOURCE_DIR}/dht-chord/s4u-dht-chord_d.xml
+ ${CMAKE_CURRENT_SOURCE_DIR}/actor-lifetime/s4u-actor-lifetime_d.xml
+ PARENT_SCOPE)
set(txt_files ${txt_files} ${CMAKE_CURRENT_SOURCE_DIR}/actions-comm/s4u-actions-comm-split-p0.txt
${CMAKE_CURRENT_SOURCE_DIR}/actions-comm/s4u-actions-comm-split-p1.txt
${CMAKE_CURRENT_SOURCE_DIR}/actions-comm/s4u-actions-comm.txt
${CMAKE_CURRENT_SOURCE_DIR}/README.doc PARENT_SCOPE)
foreach(example actions-comm actions-storage
- actor-create actor-daemon actor-kill actor-migration actor-suspend
+ actor-create actor-daemon actor-execute actor-kill actor-lifetime actor-migration actor-suspend
app-bittorrent app-masterworker app-pingpong app-token-ring
- async-wait async-waitall async-waitany actor-yield
- dht-chord plugin-hostload io mutex)
- async-wait async-waitall async-waitany actor-priority
++ async-wait async-waitall async-waitany actor-priority actor-yield
+ dht-chord
+ energy-link
+ plugin-hostload io mutex)
ADD_TESH_FACTORIES(s4u-${example} "thread;ucontext;raw;boost" --setenv bindir=${CMAKE_CURRENT_BINARY_DIR}/${example} --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/platforms --cd ${CMAKE_HOME_DIRECTORY}/examples/s4u/${example} s4u-${example}.tesh)
endforeach()
/** Suspend an actor by suspending the task on which it was waiting for the completion. */
void suspend();
- /** Resume a suspended process by resuming the task on which it was waiting for the completion. */
+ /** Resume a suspended actor by resuming the task on which it was waiting for the completion. */
void resume();
--
++
+ void yield();
-
- /** Returns true if the process is suspended. */
++
+ /** Returns true if the actor is suspended. */
int isSuspended();
/** If set to true, the actor will automatically restart when its host reboots */
{
auto seconds = std::chrono::duration_cast<SimulationClockDuration>(duration);
this_actor::sleep_for(seconds.count());
- }
- template<class Duration>
- inline void sleep_until(const SimulationTimePoint<Duration>& timeout_time)
- {
- auto timeout_native = std::chrono::time_point_cast<SimulationClockDuration>(timeout_time);
- this_actor::sleep_until(timeout_native.time_since_epoch().count());
- }
+ }
- XBT_ATTRIB_DEPRECATED_v320("Use sleep_for(): v3.20 will turn this warning into an error.") inline void sleep(
- double duration)
- {
- return sleep_for(duration);
- }
+ template <class Duration> inline void sleep_until(const SimulationTimePoint<Duration>& timeout_time)
+ {
+ auto timeout_native = std::chrono::time_point_cast<SimulationClockDuration>(timeout_time);
+ this_actor::sleep_until(timeout_native.time_since_epoch().count());
+ }
- /** Block the actor, computing the given amount of flops */
- XBT_PUBLIC(void) execute(double flop);
+ XBT_ATTRIB_DEPRECATED_v320("Use sleep_for(): v3.20 will turn this warning into an error.") inline void sleep(
+ double duration)
+ {
+ return sleep_for(duration);
+ }
- /** Block the actor until it gets a message from the given mailbox.
- *
- * See \ref Comm for the full communication API (including non blocking communications).
- */
- XBT_PUBLIC(void*)
- XBT_ATTRIB_DEPRECATED_v320("Use Mailbox::get(): v3.20 will turn this warning into an error.") recv(MailboxPtr chan);
- XBT_PUBLIC(void*)
- XBT_ATTRIB_DEPRECATED_v320("Use Mailbox::get(): v3.20 will turn this warning into an error.")
- recv(MailboxPtr chan, double timeout);
- XBT_PUBLIC(CommPtr)
- XBT_ATTRIB_DEPRECATED_v320("Use Mailbox::recv_async(): v3.20 will turn this warning into an error.")
- irecv(MailboxPtr chan, void** data);
-
- /** Block the actor until it delivers a message of the given simulated size to the given mailbox
- *
- * See \ref Comm for the full communication API (including non blocking communications).
- */
- XBT_PUBLIC(void)
- XBT_ATTRIB_DEPRECATED_v320("Use Mailbox::put(): v3.20 will turn this warning into an error.")
- send(MailboxPtr chan, void* payload, double simulatedSize); // 3.17
- XBT_PUBLIC(void)
- XBT_ATTRIB_DEPRECATED_v320("Use Mailbox::put(): v3.20 will turn this warning into an error.")
- send(MailboxPtr chan, void* payload, double simulatedSize, double timeout); // 3.17
+ /** Block the actor, computing the given amount of flops */
+ XBT_PUBLIC(void) execute(double flop);
+ /** Block the actor, computing the given amount of flops at the given priority.
+ * An execution of priority 2 computes twice as fast as an execution at priority 1. */
+ XBT_PUBLIC(void) execute(double flop, double priority);
+
+ /** Block the actor until it gets a message from the given mailbox.
+ *
+ * See \ref Comm for the full communication API (including non blocking communications).
+ */
+ XBT_ATTRIB_DEPRECATED_v320("Use Mailbox::get(): v3.20 will turn this warning into an error.") XBT_PUBLIC(void*)
+ recv(MailboxPtr chan);
+ XBT_ATTRIB_DEPRECATED_v320("Use Mailbox::get(): v3.20 will turn this warning into an error.") XBT_PUBLIC(void*)
+ recv(MailboxPtr chan, double timeout);
+ XBT_ATTRIB_DEPRECATED_v320("Use Mailbox::recv_async(): v3.20 will turn this warning into an error.") XBT_PUBLIC(CommPtr)
+ irecv(MailboxPtr chan, void** data);
+
+ /** Block the actor until it delivers a message of the given simulated size to the given mailbox
+ *
+ * See \ref Comm for the full communication API (including non blocking communications).
+ */
+ XBT_ATTRIB_DEPRECATED_v320("Use Mailbox::put(): v3.20 will turn this warning into an error.") XBT_PUBLIC(void)
+ send(MailboxPtr chan, void* payload, double simulatedSize);
+ XBT_ATTRIB_DEPRECATED_v320("Use Mailbox::put(): v3.20 will turn this warning into an error.") XBT_PUBLIC(void)
+ send(MailboxPtr chan, void* payload, double simulatedSize, double timeout);
- XBT_PUBLIC(CommPtr)
- XBT_ATTRIB_DEPRECATED_v320("Use Mailbox::put_async(): v3.20 will turn this warning into an error.")
- isend(MailboxPtr chan, void* payload, double simulatedSize);
+ XBT_ATTRIB_DEPRECATED_v320("Use Mailbox::put_async(): v3.20 will turn this warning into an error.") XBT_PUBLIC(CommPtr)
+ isend(MailboxPtr chan, void* payload, double simulatedSize);
- /** @brief Returns the actor ID of the current actor (same as pid). */
- XBT_PUBLIC(aid_t) getPid();
+ /** @brief Returns the actor ID of the current actor). */
+ XBT_PUBLIC(aid_t) getPid();
- /** @brief Returns the ancestor's actor ID of the current actor (same as ppid). */
- XBT_PUBLIC(aid_t) getPpid();
+ /** @brief Returns the ancestor's actor ID of the current actor. */
+ XBT_PUBLIC(aid_t) getPpid();
- /** @brief Returns the name of the current actor. */
- XBT_PUBLIC(std::string) getName();
+ /** @brief Returns the name of the current actor. */
+ XBT_PUBLIC(std::string) getName();
- /** @brief Returns the name of the host on which the process is running. */
- XBT_PUBLIC(Host*) getHost();
+ /** @brief Returns the name of the current actor as a C string. */
+ XBT_PUBLIC(const char*) getCname();
- /** @brief Suspend the actor. */
- XBT_PUBLIC(void) suspend();
+ /** @brief Returns the name of the host on which the actor is running. */
+ XBT_PUBLIC(Host*) getHost();
- /** @brief Resume the actor. */
- XBT_PUBLIC(void) resume();
+ /** @brief Suspend the actor. */
+ XBT_PUBLIC(void) suspend();
- XBT_PUBLIC(void) yield();
++/** @brief yield the actor. */
++XBT_PUBLIC(void) yield();
+
- XBT_PUBLIC(bool) isSuspended();
+ /** @brief Resume the actor. */
+ XBT_PUBLIC(void) resume();
- /** @brief kill the actor. */
- XBT_PUBLIC(void) kill();
+ XBT_PUBLIC(bool) isSuspended();
- /** @brief Add a function to the list of "on_exit" functions. */
- XBT_PUBLIC(void) onExit(int_f_pvoid_pvoid_t fun, void* data);
+ /** @brief kill the actor. */
+ XBT_PUBLIC(void) kill();
- /** @brief Migrate the actor to a new host. */
- XBT_PUBLIC(void) migrate(Host* new_host);
- };
+ /** @brief Add a function to the list of "on_exit" functions. */
+ XBT_PUBLIC(void) onExit(int_f_pvoid_pvoid_t fun, void* data);
+
+ /** @brief Migrate the actor to a new host. */
+ XBT_PUBLIC(void) migrate(Host* new_host);
+ }
/** @} */