Ожидание std::atomic::wait в C++
Методы wait и notify_one у
std::atomic появились в C++20 и позволяют
ждать смены значения без busy-loop.
Рабочий поток заблокируется на wait,
главный изменит число и пошлет уведомление:
#include <atomic>
#include <iostream>
#include <thread>
int main() {
std::atomic<int> gate{0};
std::thread worker([&]() {
gate.wait(0);
std::cout << "up\n";
});
gate.store(1);
gate.notify_one();
worker.join();
return 0;
}
Поток вызывает wait(0) на std::atomic<int>. Главный делает store(1) и notify_one, затем join.