A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from http://en.cppreference.com/w/cpp/error/../utility/program/../../atomic/atomic/is_lock_free.html below:

std::atomic<T>::is_lock_free - cppreference.com

bool is_lock_free() const noexcept;

(1) (since C++11)

bool is_lock_free() const volatile noexcept;

(2) (since C++11)

Checks whether the atomic operations on all objects of this type are lock-free.

[edit] Parameters

(none)

[edit] Return value

true if the atomic operations on the objects of this type are lock-free, false otherwise.

[edit] Notes

All atomic types except for std::atomic_flag may be implemented using 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.

[edit] Example
#include <atomic>
#include <iostream>
#include <utility>
 
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
[edit] See also

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4