std::recursive_timed_mutex:: try_lock_until
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
| Locking | ||||
|
recursive_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 ) ; |
(desde C++11) | |
Intenta bloquear el mutex. Se bloquea hasta que se alcanza el timeout_time especificado (timeout) o se adquiere el bloqueo (posee el mutex), lo que ocurra primero. Si la adquisición del bloqueo es exitosa retorna true , en caso contrario retorna false .
Si timeout_time ya ha pasado, esta función se comporta como try_lock() .
Clock
debe cumplir con los requisitos de
Clock
.
El programa está mal formado si
std::
chrono
::
is_clock_v
<
Clock
>
es
false
.
(desde C++20)
La norma recomienda que se utilice el reloj vinculado a timeout_time , en cuyo caso se pueden tener en cuenta los ajustes del reloj. Por lo tanto, la duración del bloqueo podría ser mayor o menor que timeout_time - Clock :: now ( ) en el momento de la llamada, dependiendo de la dirección del ajuste y de si es respetado por la implementación. La función también puede bloquearse hasta después de que se haya alcanzado timeout_time debido a la planificación de procesos o a retrasos por contención de recursos.
Al igual que con try_lock() , se permite que esta función falle espuriamente y retorne false incluso si el mutex no estaba bloqueado por ningún otro hilo en algún momento anterior a timeout_time .
La operación unlock() previa sobre el mismo mutex sincroniza-con (como se define en std::memory_order ) esta operación si retorna true .
Un hilo puede llamar a
try_lock_until
en un mutex recursivo repetidamente. Las llamadas exitosas a
try_lock_until
incrementan el contador de propiedad: el mutex solo se liberará después de que el hilo realice un número equivalente de llamadas a
unlock
.
El número máximo de niveles de propiedad no está especificado. Una llamada a
try_lock_until
devolverá
false
si se excede este número.
Contenidos |
Parámetros
| timeout_time | - | punto de tiempo máximo hasta el cual bloquear |
Valor de retorno
true si el bloqueo fue adquirido exitosamente, de lo contrario false .
Excepciones
Cualquier excepción lanzada por timeout_time (los relojes, puntos de tiempo y duraciones proporcionados por la biblioteca estándar nunca lanzan excepciones).
Ejemplo
|
Esta sección está incompleta
Razón: sin ejemplo |
Informes de defectos
Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.
| DR | Aplicado a | Comportamiento publicado | Comportamiento correcto |
|---|---|---|---|
| LWG 2093 | C++11 |
try_lock_until
no lanzaba nada
|
lanza excepciones relacionadas con tiempo de espera |
Véase también
|
bloquea el mutex, se bloquea si el mutex no está disponible
(función miembro pública) |
|
|
intenta bloquear el mutex, retorna si el mutex no está disponible
(función miembro pública) |
|
|
intenta bloquear el mutex, retorna si el mutex ha estado
no disponible durante el tiempo de espera especificado (función miembro pública) |
|
|
desbloquea el mutex
(función miembro pública) |
|
|
Documentación de C
para
mtx_timedlock
|
|