for better readability, as we don't need to care about the details of
the executor. and the returned futures are blocked in their dtor as
> these actions will not block for the shared state to become ready,
> except that it may block if all of the following are true: the
> shared state was created by a call to std::async, the shared state
> is not yet ready, and this was the last reference to the shared state.
Signed-off-by: Kefu Chai <kchai@redhat.com>
(cherry picked from commit
4e35ac670bc75e3507777d4375bbbb0fea8533ba)
#include <array>
#include <mutex>
#include <numeric>
-#include <thread>
+#include <future>
#include <gtest/gtest.h>
#include "common/fair_mutex.h"
};
}
};
- std::array<std::thread, NR_TEAMS> teams;
+ std::array<std::future<void>, NR_TEAMS> completed;
for (int team = 0; team < NR_TEAMS; team++) {
- teams[team] = std::thread(play, team);
- }
- for (auto& team : teams) {
- team.join();
+ completed[team] = std::async(std::launch::async, play, team);
}
}