Барьер std::barrier в C++
Общую фазу ждет std::barrier: нужно заданное число участников, и после каждой фазы можно вызвать функцию.
Два потока встретятся на барьере, а завершение фазы выведет слово:
#include <barrier>
#include <iostream>
#include <thread>
int main() {
std::barrier sync(2, []() noexcept {
std::cout << "phase\n";
});
std::thread helper([&]() {
sync.arrive_and_wait();
});
sync.arrive_and_wait();
helper.join();
return 0;
}
Постройте std::barrier на 2 участника с callback, печатающим "step". Оба потока вызывают arrive_and_wait.