NAME

atomic_is_lock_free — indicate whether or not atomic operations are lock-free

SYNOPSIS

#include <stdatomic.h>

_Bool atomic_is_lock_free(const volatile
A *obj);

DESCRIPTION

[CX] [Option Start] 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. [Option End]

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.

RETURN VALUE

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.

ERRORS

No errors are defined.


The following sections are informative.

EXAMPLES

None.

APPLICATION USAGE

None.

RATIONALE

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.

FUTURE DIRECTIONS

None.

SEE ALSO

XBD <stdatomic.h>

CHANGE HISTORY

First released in Issue 8. Included for alignment with the ISO/IEC 9899:2018 standard.

End of informative text.