notify_one у std::atomic появились в C++20 и позволяют ждать смены значения без busy-loop. Рабочий поток заблокируется на wait, главный изменит число.">
Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗cpSpThAw 549 of 696 menu
◀ ▶

Ожидание 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.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить