std::timed_mutex:: try_lock_until
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
| Locking | ||||
|
timed_mutex::try_lock_until
|
||||
| Native handle | ||||
|
template
<
class
Clock,
class
Duration
>
bool try_lock_until ( const std:: chrono :: time_point < Clock, Duration > & timeout_time ) ; |
(depuis C++11) | |
Tente de verrouiller le mutex. Se bloque jusqu'à ce que le timeout_time spécifié soit atteint (timeout) ou que le verrou soit acquis (le mutex est possédé), selon la première éventualité. En cas d'acquisition réussie du verrou, retourne true , sinon retourne false .
Si timeout_time est déjà dépassé, cette fonction se comporte comme try_lock() .
Clock
doit satisfaire aux exigences
Clock
.
Le programme est mal formé si
std::
chrono
::
is_clock_v
<
Clock
>
est
false
.
(depuis C++20)
La norme recommande que l'horloge liée à timeout_time soit utilisée, auquel cas les ajustements de l'horloge peuvent être pris en compte. Ainsi, la durée du blocage pourrait être supérieure ou inférieure à timeout_time - Clock :: now ( ) au moment de l'appel, selon la direction de l'ajustement et s'il est respecté par l'implémentation. La fonction peut également bloquer jusqu'à ce que timeout_time soit atteint en raison de la planification des processus ou des délais de contention des ressources.
Comme pour try_lock() , cette fonction peut échouer de manière sporadique et retourner false même si le mutex n'était verrouillé par aucun autre thread à un moment donné avant timeout_time .
L'opération de unlock() antérieure sur le même mutex synchronise-avec (tel que défini dans std::memory_order ) cette opération si elle retourne true .
Si
try_lock_until
est appelé par un thread qui possède déjà le mutex, le comportement est indéfini.
Table des matières |
Paramètres
| timeout_time | - | point temporel maximum jusqu'auquel bloquer |
Valeur de retour
true si le verrou a été acquis avec succès, sinon false .
Exceptions
Toute exception levée par timeout_time (les horloges, points temporels et durées fournis par la bibliothèque standard ne lèvent jamais d'exception).
Exemple
|
Cette section est incomplète
Raison : aucun exemple |
Rapports de défauts
Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.
| DR | Appliqué à | Comportement publié | Comportement corrigé |
|---|---|---|---|
| LWG 2093 | C++11 |
try_lock_until
ne lançait aucune exception
|
lance des exceptions liées aux délais d'attente |
Voir aussi
|
verrouille le mutex, bloque si le mutex n'est pas disponible
(fonction membre publique) |
|
|
tente de verrouiller le mutex, retourne si le mutex n'est pas disponible
(fonction membre publique) |
|
|
tente de verrouiller le mutex, retourne si le mutex est resté
indisponible pendant la durée de timeout spécifiée (fonction membre publique) |
|
|
déverrouille le mutex
(fonction membre publique) |
|
|
Documentation C
pour
mtx_timedlock
|
|