Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
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)

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>

home | help