X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/fa87b694ef63aa4f3193029f4705cc3d96492f04..575da6eb0c35cfee471dcdce960cc4b30440532d:/src/s4u/s4u_Exec.cpp diff --git a/src/s4u/s4u_Exec.cpp b/src/s4u/s4u_Exec.cpp index 24e0111c3a..71368f7420 100644 --- a/src/s4u/s4u_Exec.cpp +++ b/src/s4u/s4u_Exec.cpp @@ -53,21 +53,21 @@ Exec* Exec::start() return this; } -int Exec::wait_any_for(std::vector* execs, double timeout) +ssize_t Exec::wait_any_for(const std::vector& execs, double timeout) { - std::vector rexecs(execs->size()); - std::transform(begin(*execs), end(*execs), begin(rexecs), + std::vector rexecs(execs.size()); + std::transform(begin(execs), end(execs), begin(rexecs), [](const ExecPtr& exec) { return static_cast(exec->pimpl_.get()); }); kernel::actor::ActorImpl* issuer = kernel::actor::ActorImpl::self(); kernel::actor::ExecutionWaitanySimcall observer{issuer, rexecs, timeout}; - int changed_pos = kernel::actor::simcall_blocking( + ssize_t changed_pos = kernel::actor::simcall_blocking( [&observer] { kernel::activity::ExecImpl::wait_any_for(observer.get_issuer(), observer.get_execs(), observer.get_timeout()); }, &observer); if (changed_pos != -1) - execs->at(changed_pos)->complete(State::FINISHED); + execs.at(changed_pos)->complete(State::FINISHED); return changed_pos; } @@ -310,20 +310,20 @@ sg_error_t sg_exec_wait_for(sg_exec_t exec, double timeout) return status; } -int sg_exec_wait_any(sg_exec_t* execs, size_t count) +ssize_t sg_exec_wait_any(sg_exec_t* execs, size_t count) { return sg_exec_wait_any_for(execs, count, -1.0); } -int sg_exec_wait_any_for(sg_exec_t* execs, size_t count, double timeout) +ssize_t sg_exec_wait_any_for(sg_exec_t* execs, size_t count, double timeout) { std::vector s4u_execs; - for (unsigned int i = 0; i < count; i++) + for (size_t i = 0; i < count; i++) s4u_execs.emplace_back(execs[i], false); - int pos = simgrid::s4u::Exec::wait_any_for(&s4u_execs, timeout); - for (unsigned i = 0; i < count; i++) { - if (pos != -1 && static_cast(pos) != i) + ssize_t pos = simgrid::s4u::Exec::wait_any_for(s4u_execs, timeout); + for (size_t i = 0; i < count; i++) { + if (pos != -1 && static_cast(pos) != i) s4u_execs[i]->add_ref(); } return pos;