tgoop.com/seniorcpp/2494
Last Update:
std::atomic_flagstd::atomic_flag
является классом для реализации простой атомарной флаговой переменной. Он предоставляет механизм безопасной работы с флагом в многопоточной среде без необходимости использования блокировок.std::atomic_flag
имеет два основных метода: test_and_set()
и clear()
:
Метод test_and_set()
устанавливает флаг в "истину" и возвращает предыдущее значение флага. Если флаг уже был установлен, вызов test_and_set()
вернет true
, в противном случае он вернет false
.
Метод clear()
сбрасывает флаг в "ложь".
В этом примере создаются два потока workerThread1
и workerThread2
, которые пытаются получить доступ к защищенному блоку кода. Флаг flag
инициализируется значением true
с помощью ATOMIC_FLAG_INIT
. В цикле worker()
каждый поток пытается вызвать test_and_set()
для захвата флага. Если флаг уже установлен, поток ждет и повторно пытается его захватить. Когда флаг наконец захватывается, поток выполняет некоторую работу и вызывает clear()
для освобождения флага.
BY Senior C++ Developer

Share with your friend now:
tgoop.com/seniorcpp/2494