std::counting_semaphore<LeastMaxValue>::try_acquire_until
Von cppreference.com
< cpp | thread | counting semaphore
| template< class Clock, class Duration > bool try_acquire_until( const std::chrono::time_point<Clock, Duration>& abs_time ); |
(seit C++20) | |
Versucht, den internen Zähler atomar um 1 zu dekrementieren, wenn dieser größer als 0 ist; andernfalls blockiert, bis er größer als 0 ist und der interne Zähler erfolgreich dekrementiert werden kann, oder bis der Zeitpunkt abs_time überschritten wurde.
Das Programm ist schlecht geformt, wenn std::chrono::is_clock_v<Clock> false ist.
Inhalt |
[bearbeiten] Vorbedingungen
Clock erfüllt die Anforderungen an eine Clock.
[bearbeiten] Parameter
| abs_time | - | der früheste Zeitpunkt, bis zu dem die Funktion warten muss, um fehlschlagen zu können |
[bearbeiten] Rückgabewert
true, wenn der interne Zähler dekrementiert wurde, andernfalls false.
[bearbeiten] Ausnahmen
Kann std::system_error oder eine mit Timeout zusammenhängende Ausnahme auslösen.
[bearbeiten] Hinweise
In der Praxis kann die Funktion länger als abs_time dauern, um fehlschlagen zu können.
[bearbeiten] Siehe auch
| inkrementiert den internen Zähler und gibt blockierende Erwerber frei (public member function) | |
| dekrementiert den internen Zähler oder blockiert, bis dies möglich ist (public member function) | |
| versucht, den internen Zähler zu dekrementieren, ohne zu blockieren (public member function) | |
| versucht, den internen Zähler zu dekrementieren, blockiert für eine Dauer von bis zu time (public member function) |