FreeBSD Manual Pages
std::atomic::is_lock_free(3) C++ Standard Libary std::atomic::is_lock_free(3) NAME std::atomic::is_lock_free - std::atomic::is_lock_free Synopsis bool is_lock_free() const noexcept; (since C++11) bool is_lock_free() const volatile noexcept; Checks whether the atomic operations on all objects of this type are lock-free. Parameters (none) Return value true if the atomic operations on the objects of this type are lock- free, false otherwise. Notes All atomic types except for std::atomic_flag may be implemented us- ing mutexes or other locking operations, rather than using the lock-free atomic CPU instructions. Atomic types are also allowed to be sometimes lock-free, e.g. if only aligned memory accesses are naturally atomic on a given architecture, misaligned objects of the same type have to use locks. The C++ standard recommends (but does not require) that lock-free atomic operations are also address-free, that is, suitable for communication between processes using shared memory. Example // Run this code #include <iostream> #include <utility> #include <atomic> struct A { int a[100]; }; struct B { int x, y; }; int main() { std::cout << std::boolalpha << "std::atomic<A> is lock free? " << std::atomic<A>{}.is_lock_free() << '\n' << "std::atomic<B> is lock free? " << std::atomic<B>{}.is_lock_free() << '\n'; } Possible output: std::atomic<A> is lock free? false std::atomic<B> is lock free? true See also atomic_is_lock_free checks if the atomic type's op- erations are (C++11) lock-free (function template) specializes atomic operations for atomic_is_lock_free(std::shared_ptr) std::shared_ptr (function template) is_always_lock_free indicates that the type is al- ways lock-free [static] (C++17) (public static member constant) http://cppreference.com 2022.07.31 std::atomic::is_lock_free(3)
NAME | Synopsis | Parameters | Return value | Notes | Example | Possible output: | See also
Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::atomic::is_lock_free&sektion=3&manpath=FreeBSD+Ports+15.0>
