ic_compare_exchange_strong_explicit  ](/w/cpp/atomic/atomic_compare_exchange "cpp/atomic/atomic compare exchange") (C++11)  (C++11)  (C++11)  (C++11)  |  atomically compares the value of the atomic object with non-atomic argument and performs atomic exchange if equal or atomic load if not   
(function template)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/atomic/dsc_atomic_compare_exchange&action=edit)  
[ atomic_fetch_add  atomic_fetch_add_explicit  ](/w/cpp/atomic/atomic_fetch_add "cpp/atomic/atomic fetch add") (C++11)  (C++11)  |  adds a non-atomic value to an atomic object and obtains the previous value of the atomic   
(function template)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/atomic/dsc_atomic_fetch_add&action=edit)  
[ atomic_fetch_sub  atomic_fetch_sub_explicit  ](/w/cpp/atomic/atomic_fetch_sub "cpp/atomic/atomic fetch sub") (C++11)  (C++11)  |  subtracts a non-atomic value from an atomic object and obtains the previous value of the atomic   
(function template)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/atomic/dsc_atomic_fetch_sub&action=edit)  
[ atomic_fetch_and  atomic_fetch_and_explicit  ](/w/cpp/atomic/atomic_fetch_and "cpp/atomic/atomic fetch and") (C++11)  (C++11)  |  replaces the atomic object with the result of bitwise AND with a non-atomic argument and obtains the previous value of the atomic   
(function template)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/atomic/dsc_atomic_fetch_and&action=edit)  
[ atomic_fetch_or  atomic_fetch_or_explicit  ](/w/cpp/atomic/atomic_fetch_or "cpp/atomic/atomic fetch or") (C++11)  (C++11)  |  replaces the atomic object with the result of bitwise OR with a non-atomic argument and obtains the previous value of the atomic   
(function template)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/atomic/dsc_atomic_fetch_or&action=edit)  
[ atomic_fetch_xor  atomic_fetch_xor_explicit  ](/w/cpp/atomic/atomic_fetch_xor "cpp/atomic/atomic fetch xor") (C++11)  (C++11)  |  replaces the atomic object with the result of bitwise XOR with a non-atomic argument and obtains the previous value of the atomic   
(function template)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/atomic/dsc_atomic_fetch_xor&action=edit)  
[ atomic_wait  atomic_wait_explicit  ](/w/cpp/atomic/atomic_wait "cpp/atomic/atomic wait") (C++20)  (C++20)  |  blocks the thread until notified and the atomic value changes   
(function template)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/atomic/dsc_atomic_wait&action=edit)  
[ atomic_notify_one  ](/w/cpp/atomic/atomic_notify_one "cpp/atomic/atomic notify one") (C++20)  |  notifies a thread blocked in atomic_wait   
(function template)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/atomic/dsc_atomic_notify_one&action=edit)  
[ atomic_notify_all  ](/w/cpp/atomic/atomic_notify_all "cpp/atomic/atomic notify all") (C++20)  |  notifies all threads blocked in atomic_wait   
(function template)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/atomic/dsc_atomic_notify_all&action=edit)  
  
#####  Flag type and operations  
  
[ atomic_flag  ](/w/cpp/atomic/atomic_flag "cpp/atomic/atomic flag") (C++11)  |  the lock-free boolean atomic type   
(class)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/atomic/dsc_atomic_flag&action=edit)  
[ atomic_flag_test_and_set  atomic_flag_test_and_set_explicit  ](/w/cpp/atomic/atomic_flag_test_and_set "cpp/atomic/atomic flag test and set") (C++11)  (C++11)  |  atomically sets the flag to  true  and returns its previous value   
(function)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/atomic/dsc_atomic_flag_test_and_set&action=edit)  
[ atomic_flag_clear  atomic_flag_clear_explicit  ](/w/cpp/atomic/atomic_flag_clear "cpp/atomic/atomic