X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/45ae0195c6ad8232415288c5da07b4bdc23a31b4..3c038eac822ac8fbc74a278571574a13de0bd17f:/examples/s4u/dht-chord/s4u_dht-chord.hpp?ds=sidebyside diff --git a/examples/s4u/dht-chord/s4u_dht-chord.hpp b/examples/s4u/dht-chord/s4u_dht-chord.hpp index 60f3d6b964..a415bf9bd3 100644 --- a/examples/s4u/dht-chord/s4u_dht-chord.hpp +++ b/examples/s4u/dht-chord/s4u_dht-chord.hpp @@ -126,10 +126,10 @@ public: double next_fix_fingers_date = start_time_ + PERIODIC_FIX_FINGERS_DELAY; double next_check_predecessor_date = start_time_ + PERIODIC_CHECK_PREDECESSOR_DELAY; double next_lookup_date = start_time_ + PERIODIC_LOOKUP_DELAY; - + simgrid::s4u::CommPtr comm_receive = nullptr; while ((now < (start_time_ + deadline_)) && now < MAX_SIMULATION_TIME) { - data = nullptr; - simgrid::s4u::CommPtr comm_receive = simgrid::s4u::this_actor::irecv(mailbox_, &data); + if (comm_receive == nullptr) + comm_receive = simgrid::s4u::this_actor::irecv(mailbox_, &data); while ((now < (start_time_ + deadline_)) && now < MAX_SIMULATION_TIME && not comm_receive->test()) { // no task was received: make some periodic calls if (now >= next_stabilize_date) { @@ -154,8 +154,8 @@ public: if (data != nullptr) { ChordMessage* message = static_cast(data); handleMessage(message); - } else { - comm_receive->cancel(); + comm_receive = nullptr; + data = nullptr; } now = simgrid::s4u::Engine::getClock(); }