From: Zitagcc Date: Thu, 23 Nov 2017 09:23:55 +0000 (+0100) Subject: Merge branch 'master' into actor-yield X-Git-Tag: v3.18~227^2^2~1 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/2807fde4fd1f59c230d69a934634c5dfb77905f2 Merge branch 'master' into actor-yield --- 2807fde4fd1f59c230d69a934634c5dfb77905f2 diff --cc examples/s4u/CMakeLists.txt index ac2b58b2c2,5b88ee4b44..3e90de1bdc --- a/examples/s4u/CMakeLists.txt +++ b/examples/s4u/CMakeLists.txt @@@ -1,7 -1,8 +1,8 @@@ 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) @@@ -32,10 -33,13 +33,14 @@@ endforeach( 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 @@@ -45,8 -50,9 +51,10 @@@ ${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}/actor-yield/s4u-actor-yield_d.xml - ${CMAKE_CURRENT_SOURCE_DIR}/dht-chord/s4u-dht-chord_d.xml PARENT_SCOPE) + ${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 @@@ -54,9 -60,11 +62,11 @@@ ${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() diff --cc include/simgrid/s4u/Actor.hpp index b4e58c9ece,e9cdd87e85..92fc4852ce --- a/include/simgrid/s4u/Actor.hpp +++ b/include/simgrid/s4u/Actor.hpp @@@ -215,12 -215,10 +215,12 @@@ public /** 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 */ @@@ -288,82 -286,81 +288,84 @@@ template inli { auto seconds = std::chrono::duration_cast(duration); this_actor::sleep_for(seconds.count()); - } - template - inline void sleep_until(const SimulationTimePoint& timeout_time) - { - auto timeout_native = std::chrono::time_point_cast(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 inline void sleep_until(const SimulationTimePoint& timeout_time) + { + auto timeout_native = std::chrono::time_point_cast(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); + } /** @} */