atomic_fence, atomic_thread_fence, atomic_signal_fence - memory barrier functions
cc -std=c11 -xatomic=studio [ flag... ] file... [ library... ]
CC -std=c++11 -xatomic=studio [ flag... ] file... [ library... ]
#include <stdatomic.h> void atomic_thread_fence(memory_order order);
void atomic_signal_fence(memory_order order);
#include <atomic> namespace std { extern "C" void atomic_thread_fence(memory_order order) noexcept; extern "C" void atomic_signal_fence(memory_order order) noexcept; }
Depending on the value of order, atomic_thread_fence():
has no effects, if order == memory_order_relaxed;
is an acquire fence, if order == memory_order_acquire or order == memory_order_consume;
is a release fence, if order == memory_order_release;
is both an acquire fence and a release fence, if order == memory_order_acq_rel;
is a sequentially consistent acquire and release fence, if order == memory_order_seq_cst.
Refer to stdatomic.h(3A) for details of memory_order and the effect of each kind of fences.
atomic_signal_fence() is equivalent to atomic_thread_fence(), except that the resulting ordering constraints are established only between a thread and a signal handler executed in the same thread.
See attributes(5) for descriptions of the following attributes:
|