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

FreeBSD Manual Pages

  
 
  

home | help
std::recurs...x::try_lock(3)  C++ Standard Libary std::recurs...x::try_lock(3)

NAME
       std::recursive_mutex::try_lock -	std::recursive_mutex::try_lock

Synopsis
	  bool try_lock();  (since C++11)

	  Tries	to lock	the mutex. Returns immediately.	On successful lock ac-
       quisition returns
	  true,	otherwise returns false.

	  This function	is allowed to fail spuriously and return false even if
       the mutex is
	  not currently	locked by any other thread.

	  A thread may call try_lock on	a recursive mutex repeatedly. Success-
       ful calls to
	  try_lock  increment  the ownership count: the	mutex will only	be re-
       leased after the
	  thread makes a matching number of calls to unlock.

	  The maximum number of	levels of ownership is unspecified. A call  to
       try_lock	will
	  return false if this number is exceeded.

	  Prior	unlock() operation on the same mutex synchronizes-with (as de-
       fined in
	  std::memory_order)  this  operation  if  it  returns true. Note that
       prior lock() does
	  not synchronize with this operation if it returns false.

Parameters
	  (none)

Return value
	  true if the lock was acquired	successfully, otherwise	false.

Exceptions
	  Throws nothing.

Example
       // Run this code

	#include <iostream>
	#include <mutex>

	int main()
	{
	    std::recursive_mutex test;
	    if (test.try_lock()) {
		std::cout << "lock acquired\n";
		test.unlock();
	    } else {
		std::cout << "lock not acquired\n";
	    }

	    test.lock();
	    // non-recursive mutex would return	false from try_lock now
	    if (test.try_lock()) {
		std::cout << "lock acquired\n";
		test.unlock();
	    } else {
		std::cout << "lock not acquired\n";
	    }
	    test.unlock();
	}

Output:
	lock acquired
	lock acquired

See also
	  lock	 locks the mutex, blocks if the	mutex is not available
		 (public member	function)
	  unlock unlocks the mutex
		 (public member	function)

http://cppreference.com		  2022.07.31	  std::recurs...x::try_lock(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::recursive_mutex::try_lock&sektion=3&manpath=FreeBSD+Ports+15.0>

home | help