These macros specify whether the atomic types corresponding to particular built-in types are lock-free or not.
#define ATOMIC_BOOL_LOCK_FREE unspecified #define ATOMIC_CHAR_LOCK_FREE unspecified #define ATOMIC_SHORT_LOCK_FREE unspecified #define ATOMIC_INT_LOCK_FREE unspecified #define ATOMIC_LONG_LOCK_FREE unspecified #define ATOMIC_LLONG_LOCK_FREE unspecified #define ATOMIC_CHAR16_T_LOCK_FREE unspecified #define ATOMIC_CHAR32_T_LOCK_FREE unspecified #define ATOMIC_WCHAR_T_LOCK_FREE unspecified #define ATOMIC_POINTER_LOCK_FREE unspecified // for backwards compatibility only #define ATOMIC_ADDRESS_LOCK_FREE unspecified
The value of
_LOCK_FREE is either 0, 1 or 2. A value
of 0 means that operations on both the signed and unsigned atomic types
corresponding to the named type are never lock-free,
a value of 1 means that the operations may be lock-free for particular
instances of those types, and not for others, and a value of 2 means that
the operations are always lock-free. e.g. if
is 2 then operations on instances of
std::atomic<unsigned> are always lock-free.
describes the lock-free property of operations on the atomic pointer specializations
is an alias for
provided for backwards compatibility with previous releases.
are only defined if the corresponding native types are available on the