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

FreeBSD Manual Pages

  
 
  

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

NAME
       std::timed_mutex::try_lock_until	- std::timed_mutex::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.

	  If try_lock_until is called by a thread that already owns the	mutex,
       the behavior is
	  undefined.

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::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::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::timed_..._lock_until(3)

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

home | help