C++ Atomic Library - Flag Clear



Description

It atomically sets the value of the flag to false.

Declaration

Following is the declaration for std::atomic_flag_clear.

 void atomic_flag_clear( std::atomic_flag* p ); 

C++11

 void atomic_flag_clear( volatile std::atomic_flag* p ); 

Following is the declaration for std::atomic_flag_clear_explicit.

 void atomic_flag_clear_explicit( std::atomic_flag* p, std::memory_order order ); 

C++11

 void atomic_flag_clear_explicit( volatile std::atomic_flag* p, std::memory_order order ); 

Parameters

  • p − It is used in pointer to std::atomic_flag to access.

  • order − It is used to synchronise the memory ordering for this operation.

Return Value

none

Exceptions

No-noexcept − this member function never throws exceptions.

Example

In below example for std::atomic_flag_test_and_set_explicit.

 #include <thread> #include <vector> #include <iostream> #include <atomic> std::atomic_flag lock = ATOMIC_FLAG_INIT; void f(int n) { for (int cnt = 0; cnt < 100; ++cnt) { while(std::atomic_flag_test_and_set_explicit(&lock, std::memory_order_acquire)) ; std::cout << "Output from thread " << n << '\n'; std::atomic_flag_clear_explicit(&lock, std::memory_order_release); } } int main() { std::vector<std::thread> v; for (int n = 0; n < 10; ++n) { v.emplace_back(f, n); } for (auto& t : v) { t.join(); } } 

The sample output should be like this −

 Output from thread 0 Output from thread 1 Output from thread 0 Output from thread 0 Output from thread 1 Output from thread 1 Output from thread 0 Output from thread 0 Output from thread 1 Output from thread 0 .................... 
atomic.htm
Advertisements