Defined in header <stdatomic.h>
void atomic_thread_fence( memory_order order );
(since C11)

Establishes memory synchronization ordering of non-atomic and relaxed atomic accesses, as instructed by order, without an associated atomic operation. For example, all non-atomic and relaxed atomic stores that happen before a memory_order_release fence in thread A will be synchronized with non-atomic and relaxed atomic loads from the same locations made in thread B after an memory_order_acquire fence.


order - the memory ordering executed by this fence

Return value



  • C17 standard (ISO/IEC 9899:2018):
    • The atomic_thread_fence function (p: 204)
  • C11 standard (ISO/IEC 9899:2011):
    • The atomic_thread_fence function (p: 278-279)

See also

fence between a thread and a signal handler executed in the same thread
C++ documentation for atomic_thread_fence

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.