std::shared..._shared_for(3)
π std::shared_timed_mutex::try_lock_shared_for π
okay bestie, welcome to the std::shared..._shared_for(3) page from the C++ Standard Libary manual. This is the C++14 shared-lock-with-a-timeout situation, and she is very specific about what she will and won't promise. β¨
β¨ NAME β¨
std::shared_timed_mutex::try_lock_shared_for β and yes, the page says it again, because she contains multitudes: std::shared_timed_mutex::try_lock_shared_for. π
π Synopsis π
template< class Rep, class Period >
bool try_lock_shared_for( const std::chrono::duration<Rep,Period>&
timeout_duration );
That one is marked (since C++14), bestie. π
Tries to lock the mutex in shared mode. Blocks until specified timeout_duration has elapsed or the shared lock is acquired, whichever comes first. On successful lock acquisition returns true, otherwise returns false.
If timeout_duration is less or equal timeout_duration.zero(), the function behaves like try_lock_shared().
This function may block for longer than timeout_duration due to scheduling or resource contention delays.
The standard recommends that a steady clock is used to measure the duration. If an implementation uses a system clock instead, the wait time may also be sensitive to clock adjustments.
As with try_lock_shared(), this function is allowed to fail spuriously and return false even if the mutex was not locked by any other thread at some point during timeout_duration.
Prior unlock() operation on the same mutex synchronizes-with (as defined in std::memory_order) this operation if it returns true.
If try_lock_shared_for is called by a thread that already owns the mutex in any mode (shared or exclusive), the behavior is undefined.
π¨ bestie, undefined behavior is not a cute look. If you already own that mutex in any mode, do not call this.
πΈ Parameters πΈ
timeout_durationβ maximum duration to block for.
β 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 section is incomplete.
Reason: no example.
π not the incomplete example section, but that's literally what the page says.
π See also π
try_lock_sharedβ tries to lock the mutex for shared ownership, returns if the mutex is not available (public member function).try_lock_shared_untilβ tries to lock the mutex for shared ownership, returns if the mutex has been unavailable until specified time point has been reached (public member function).try_lock_forβ tries to lock the mutex, returns if the mutex has been unavailable for the specified timeout duration (public member function).
π Category π
* Todo no example
π source: http://cppreference.com Β· version/date: 2024.06.10 β go forth and lock responsibly, bestie, mwah! π
π¦ where this page comes from
- nixpkgs unstable: stdman 2024.07.05
- opensuse-leap 16.0: stdman 2024.07.05-bp160.1.9 Β· MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms