X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/4b3f034babb47fcaf8e1e58dbbc6d76968f6f478..2fdac8e44fe72cf8df28926a7b907c9c25a71e35:/src/s4u/s4u_actor.cpp diff --git a/src/s4u/s4u_actor.cpp b/src/s4u/s4u_actor.cpp index 4a58590436..d5d5e9963d 100644 --- a/src/s4u/s4u_actor.cpp +++ b/src/s4u/s4u_actor.cpp @@ -16,18 +16,18 @@ XBT_LOG_NEW_DEFAULT_CATEGORY(s4u_actor,"S4U actors"); using namespace simgrid; -s4u::Actor::Actor(smx_process_t smx_proc) : pimpl_(smx_proc) {} - s4u::Actor::Actor(const char* name, s4u::Host *host, double killTime, std::function code) { // TODO, when autorestart is used, the std::function is copied so the new // instance will get a fresh (reinitialized) state. Is this what we want? - this->pimpl_ = simcall_process_create( + this->pimpl_ = SIMIX_process_ref(simcall_process_create( name, std::move(code), nullptr, host->name().c_str(), - killTime, NULL, 0); + killTime, nullptr, 0)); } -s4u::Actor::~Actor() {} +void s4u::Actor::join() { + simcall_process_join(pimpl_, -1); +} void s4u::Actor::setAutoRestart(bool autorestart) { simcall_process_auto_restart_set(pimpl_,autorestart); @@ -55,7 +55,7 @@ double s4u::Actor::getKillTime() { void s4u::Actor::kill(int pid) { msg_process_t process = SIMIX_process_from_PID(pid); - if(process != NULL) { + if(process != nullptr) { simcall_process_kill(process); } else { std::ostringstream oss; @@ -84,12 +84,12 @@ void sleep(double duration) { } e_smx_state_t execute(double flops) { - smx_synchro_t s = simcall_execution_start(NULL,flops,1.0/*priority*/,0./*bound*/, 0L/*affinity*/); + smx_synchro_t s = simcall_execution_start(nullptr,flops,1.0/*priority*/,0./*bound*/, 0L/*affinity*/); return simcall_execution_wait(s); } void* recv(Mailbox &chan) { - void *res = NULL; + void *res = nullptr; Comm c = Comm::recv_init(chan); c.setDstData(&res,sizeof(res)); c.wait();