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

FreeBSD Manual Pages

  
 
  

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

NAME
       std::recursive_timed_mutex::try_lock_until  -  std::recursive_timed_mu-
       tex::try_lock_until

Synopsis
	  template< class Clock, class Duration	>
	  bool try_lock_until( const  std::chrono::time_point<Clock,Duration>&
       (since C++11)
	  timeout_time );

	  Tries	 to  lock  the	mutex. Blocks until specified timeout_time has
       been reached or the
	  lock is acquired, whichever comes first. On successful lock acquisi-
       tion returns
	  true,	otherwise returns false.

	  If timeout_time has  already	passed,	 this  function	 behaves  like
       try_lock().

	  Clock	must meet the Clock requirements.
	  The  programs	 is  ill-formed	 if  std::chrono::is_clock_v<Clock> is
       false
	  (since C++20).

	  The standard recommends that the clock tied to timeout_time be used,
       in which	case
	  adjustments of the clock may be taken	into account. Thus, the	 dura-
       tion of the block
	  might,   but	might  not,  be	 less  or  more	 than  timeout_time  -
       Clock::now() at the time
	  of the call, depending  on  the  direction  of  the  adjustment  and
       whether it is honored
	  by  the  implementation. The function	also may block for longer than
       until after
	  timeout_time has been	reached	due to	scheduling  or	resource  con-
       tention delays.

	  As  with try_lock(), this function is	allowed	to fail	spuriously and
       return false
	  even if the mutex was	not locked by any other	thread at  some	 point
       before
	  timeout_time.

	  Prior	unlock() operation on the same mutex synchronizes-with (as de-
       fined in
	  std::memory_order) this operation if it returns true.

	  A  thread  may  call try_lock_until on a recursive mutex repeatedly.
       Successful calls
	  to try_lock_until increment the ownership count: the mutex will only
       be released
	  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_until
	  will return false if this number is exceeded.

Parameters
	  timeout_time - maximum time point to block until

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

Exceptions
	  Any  exception  thrown  by clock, time_point,	or duration during the
       execution (clocks,
	  time points, and durations provided by the  standard	library	 never
       throw)

Example
	  This example shows a 10 seconds block

       // Run this code

	#include <thread>
	#include <iostream>
	#include <chrono>
	#include <mutex>

	std::recursive_timed_mutex test_mutex;

	void f()
	{
	    auto now=std::chrono::steady_clock::now();
	    test_mutex.try_lock_until(now + std::chrono::seconds(10));
	    std::cout << "hello	world\n";
	}

	int main()
	{
	    std::lock_guard<std::recursive_timed_mutex>	l(test_mutex);
	    std::thread	t(f);
	    t.join();
	}

See also
	  lock	       locks the mutex,	blocks if the mutex is not available
		       (public member function)
	  try_lock	tries  to  lock	the mutex, returns if the mutex	is not
       available
		       (public member function)
		       tries to	lock the mutex,	returns	if the mutex has been
	  try_lock_for unavailable for the specified timeout duration
		       (public member function)
	  unlock       unlocks the mutex
		       (public member function)

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

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

home | help