- parmap.apply(fun_get_id, data);
-
- std::sort(begin(a), end(a));
- unsigned count = static_cast<unsigned>(std::distance(begin(a), std::unique(begin(a), end(a))));
+ unsigned sleep_ms = 10;
+ unsigned count;
+ while (true) {
+ parmap.apply(
+ [sleep_ms](std::thread::id* arg) {
+ *arg = std::this_thread::get_id();
+ std::this_thread::sleep_for(std::chrono::milliseconds(sleep_ms));
+ },
+ data);
+ std::sort(begin(a), end(a));
+ count = static_cast<unsigned>(std::distance(begin(a), std::unique(begin(a), end(a))));
+ if (count == num_workers || sleep_ms > 250)
+ break;
+ sleep_ms *= 2;
+ XBT_DEBUG("Failure. Try again with duration = %ums", sleep_ms);
+ }