std::shared_timed_mutex:: try_lock_shared_until
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
| Exclusive locking | ||||
| Shared locking | ||||
|
shared_timed_mutex::try_lock_shared_until
|
||||
|
template
<
class
Clock,
class
Duration
>
bool try_lock_shared_until ( const std:: chrono :: time_point < Clock,Duration > & timeout_time ) ; |
(depuis C++14) | |
Tente de verrouiller le mutex en mode partagé. Bloque jusqu'à ce que le timeout_time spécifié soit atteint ou que le verrou soit acquis, 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_shared() .
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 délais d'ordonnancement des processus ou de contention des ressources.
Comme pour try_lock_shared() , cette fonction peut échouer de manière sporadique et renvoyer 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_shared_until
est appelé par un thread qui possède déjà le
mutex
dans n'importe quel mode (partagé ou exclusif), le comportement est indéfini.
Table des matières |
Paramètres
| timeout_time | - | point temporel maximum jusqu'auquel bloquer |
Valeur de retour
true si la propriété du verrou partagé a été acquise avec succès, sinon false .
Exceptions
Toute exception levée par clock, time_point ou duration durant l'exécution (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 |
Voir aussi
|
tente de verrouiller le mutex, retourne si le mutex est resté
indisponible jusqu'à ce que le point temporel spécifié soit atteint (fonction membre publique) |
|
|
tente de verrouiller le mutex en propriété partagée, retourne si le mutex n'est pas disponible
(fonction membre publique) |
|
|
tente de verrouiller le mutex en propriété partagée, retourne si le mutex est resté
indisponible pendant la durée de timeout spécifiée (fonction membre publique) |