X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/ebfac0edb85c7b691b8c073e77bcb68f2b1fdda1..5725e648e694cc24d6b66346a24a570970b71d94:/src/s4u/s4u_Comm.cpp diff --git a/src/s4u/s4u_Comm.cpp b/src/s4u/s4u_Comm.cpp index 0ba395a216..64e9ea3480 100644 --- a/src/s4u/s4u_Comm.cpp +++ b/src/s4u/s4u_Comm.cpp @@ -461,7 +461,7 @@ Comm* Comm::wait_for(double timeout) return this; } -ssize_t Comm::wait_any_for(const std::vector& comms, double timeout) +ssize_t Comm::deprecated_wait_any_for(const std::vector& comms, double timeout) { std::vector activities; for (const auto& comm : comms) @@ -566,7 +566,16 @@ void sg_comm_wait_all(sg_comm_t* comms, size_t count) ssize_t sg_comm_wait_any(sg_comm_t* comms, size_t count) { - return sg_comm_wait_any_for(comms, count, -1); + std::vector s4u_comms; + for (size_t i = 0; i < count; i++) + s4u_comms.emplace_back(comms[i], false); + + ssize_t pos = simgrid::s4u::Comm::deprecated_wait_any_for(s4u_comms, -1); + for (size_t i = 0; i < count; i++) { + if (pos != -1 && static_cast(pos) != i) + s4u_comms[i]->add_ref(); + } + return pos; } ssize_t sg_comm_wait_any_for(sg_comm_t* comms, size_t count, double timeout) @@ -575,7 +584,7 @@ ssize_t sg_comm_wait_any_for(sg_comm_t* comms, size_t count, double timeout) for (size_t i = 0; i < count; i++) s4u_comms.emplace_back(comms[i], false); - ssize_t pos = simgrid::s4u::Comm::wait_any_for(s4u_comms, timeout); + ssize_t pos = simgrid::s4u::Comm::deprecated_wait_any_for(s4u_comms, timeout); for (size_t i = 0; i < count; i++) { if (pos != -1 && static_cast(pos) != i) s4u_comms[i]->add_ref();