table of contents
        
      
      
    - Tumbleweed 2024.07.05-1.3
 - Leap-16.0
 - Leap-15.6
 
| 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; (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.
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
    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.
Example¶
// Run this code
  
   #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
See also¶
 atomic_is_lock_free checks if the atomic type's operations 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 always lock-free
  
   [static] (C++17) (public static member constant)
| 2024.06.10 | http://cppreference.com |