atomic_is_lock_free — indicate whether or not atomic operations are lock-free
#include <stdatomic.h>
_Bool atomic_is_lock_free(const volatile A *obj);
[CX] The functionality described on this reference page is aligned with the ISO C standard. Any conflict between the requirements described here and the ISO C standard is unintentional. This volume of POSIX.1-2024 defers to the ISO C standard.Implementations that define the macro __STDC_NO_ATOMICS__ need not provide the <stdatomic.h> header nor support these generic functions.
The atomic_is_lock_free() generic function shall indicate whether or not atomic operations on objects of the type pointed to by obj are lock-free; obj can be a null pointer.
The atomic_is_lock_free() generic function shall return a non-zero value if and only if atomic operations on objects of the type pointed to by obj are lock-free. During the lifetime of the calling process, the result of the lock-free query shall be consistent for all pointers of the same type.
No errors are defined.
None.
None.
Operations that are lock-free should also be address-free. That is, atomic operations on the same memory location via two different addresses will communicate atomically. The implementation should not depend on any per-process state. This restriction enables communication via memory mapped into a process more than once and memory shared between two processes.
None.
XBD <stdatomic.h>
First released in Issue 8. Included for alignment with the ISO/IEC 9899:2018 standard.
return to top of page