Semaphore.TryAcquire Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Sobrecargas
TryAcquire() |
Adquiere un permiso de este semáforo, solo si hay uno disponible en el momento de la invocación. |
TryAcquire(Int32) |
Adquiere el número determinado de permisos de este semáforo, solo si todos están disponibles en el momento de la invocación. |
TryAcquire(Int64, TimeUnit) |
Adquiere un permiso de este semáforo, si uno está disponible dentro del tiempo de espera dado y el subproceso actual no se ha interrumpido la interrupción de Thread#. |
TryAcquire(Int32, Int64, TimeUnit) |
Adquiere el número determinado de permisos de este semáforo, si todos están disponibles en el tiempo de espera especificado y el subproceso actual no se ha interrumpido la interrupción de Thread#. |
TryAcquire()
Adquiere un permiso de este semáforo, solo si hay uno disponible en el momento de la invocación.
[Android.Runtime.Register("tryAcquire", "()Z", "GetTryAcquireHandler")]
public virtual bool TryAcquire ();
[<Android.Runtime.Register("tryAcquire", "()Z", "GetTryAcquireHandler")>]
abstract member TryAcquire : unit -> bool
override this.TryAcquire : unit -> bool
Devoluciones
true
si se adquirió un permiso y false
, de lo contrario,
- Atributos
Comentarios
Adquiere un permiso de este semáforo, solo si hay uno disponible en el momento de la invocación.
Adquiere un permiso, si uno está disponible y devuelve inmediatamente, con el valor true
, lo que reduce el número de permisos disponibles por uno.
Si no hay permiso disponible, este método devolverá inmediatamente con el valor false
.
Incluso cuando este semáforo se ha establecido para usar una directiva de ordenación justa, una llamada a tryAcquire()
<em>will</em> adquiere inmediatamente un permiso si está disponible, independientemente de si hay o no otros subprocesos en espera. Este " barging" el comportamiento puede ser útil en determinadas circunstancias, aunque rompa la equidad. Si desea respetar la configuración de equidad, use #tryAcquire(long, TimeUnit) tryAcquire(0, TimeUnit.SECONDS)
que es casi equivalente (también detecta interrupciones).
Documentación de Java para java.util.concurrent.Semaphore.tryAcquire()
.
Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el proyecto de código abierto de Android y se usan según los términos descritos en la licencia de atribución de Creative Commons 2.5.
Se aplica a
TryAcquire(Int32)
Adquiere el número determinado de permisos de este semáforo, solo si todos están disponibles en el momento de la invocación.
[Android.Runtime.Register("tryAcquire", "(I)Z", "GetTryAcquire_IHandler")]
public virtual bool TryAcquire (int permits);
[<Android.Runtime.Register("tryAcquire", "(I)Z", "GetTryAcquire_IHandler")>]
abstract member TryAcquire : int -> bool
override this.TryAcquire : int -> bool
Parámetros
- permits
- Int32
el número de permisos para adquirir
Devoluciones
true
si se adquirieron los permisos y false
, de lo contrario,
- Atributos
Excepciones
si permits
es negativo
Comentarios
Adquiere el número determinado de permisos de este semáforo, solo si todos están disponibles en el momento de la invocación.
Adquiere el número determinado de permisos, si están disponibles, y devuelve inmediatamente, con el valor true
, reduciendo el número de permisos disponibles por la cantidad especificada.
Si no hay permisos suficientes disponibles, este método devolverá inmediatamente con el valor false
y el número de permisos disponibles no se modifica.
Incluso cuando este semáforo se ha establecido para usar una directiva de ordenación justa, una llamada a tryAcquire
<em>will</em> adquiere inmediatamente un permiso si está disponible, independientemente de si hay o no otros subprocesos en espera. Este " barging" el comportamiento puede ser útil en determinadas circunstancias, aunque rompa la equidad. Si desea respetar la configuración de equidad, use #tryAcquire(int, long, TimeUnit) tryAcquire(permits, 0, TimeUnit.SECONDS)
que es casi equivalente (también detecta interrupciones).
Documentación de Java para java.util.concurrent.Semaphore.tryAcquire(int)
.
Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el proyecto de código abierto de Android y se usan según los términos descritos en la licencia de atribución de Creative Commons 2.5.
Se aplica a
TryAcquire(Int64, TimeUnit)
Adquiere un permiso de este semáforo, si uno está disponible dentro del tiempo de espera dado y el subproceso actual no se ha interrumpido la interrupción de Thread#.
[Android.Runtime.Register("tryAcquire", "(JLjava/util/concurrent/TimeUnit;)Z", "GetTryAcquire_JLjava_util_concurrent_TimeUnit_Handler")]
public virtual bool TryAcquire (long timeout, Java.Util.Concurrent.TimeUnit? unit);
[<Android.Runtime.Register("tryAcquire", "(JLjava/util/concurrent/TimeUnit;)Z", "GetTryAcquire_JLjava_util_concurrent_TimeUnit_Handler")>]
abstract member TryAcquire : int64 * Java.Util.Concurrent.TimeUnit -> bool
override this.TryAcquire : int64 * Java.Util.Concurrent.TimeUnit -> bool
Parámetros
- timeout
- Int64
tiempo máximo para esperar un permiso
- unit
- TimeUnit
la unidad de tiempo del timeout
argumento
Devoluciones
true
si se adquirió un permiso y false
si el tiempo de espera transcurrido antes de adquirir un permiso
- Atributos
Excepciones
si se interrumpe el subproceso actual
Comentarios
Adquiere un permiso de este semáforo, si uno está disponible dentro del tiempo de espera dado y el subproceso actual no se ha interrumpido la interrupción de Thread#.
Adquiere un permiso, si uno está disponible y devuelve inmediatamente, con el valor true
, lo que reduce el número de permisos disponibles por uno.
Si no hay permiso disponible, el subproceso actual se deshabilita con fines de programación de subprocesos y permanece inactivo hasta que se produce una de las tres cosas: <ul><li>Otros subprocesos invocan el #release
método para este semáforo y el subproceso actual está junto a asignar un permiso; o <li>Otros subprocesos Thread#interrupt interrumpen el subproceso actual; o <li>El tiempo de espera especificado transcurre. </ul>
Si se adquiere un permiso, se devuelve el valor true
.
Si el subproceso actual: <ul<>li>tiene su estado interrumpido establecido en la entrada a este método; o <li>es Thread#interrupt interrumpida mientras espera adquirir un permiso, </ul> se InterruptedException
produce y se borra el estado interrumpido del subproceso actual.
Si transcurre el tiempo de espera especificado, se devuelve el valor false
. Si el tiempo es menor o igual que cero, el método no esperará en absoluto.
Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el proyecto de código abierto de Android y se usan según los términos descritos en la licencia de atribución de Creative Commons 2.5.
Se aplica a
TryAcquire(Int32, Int64, TimeUnit)
Adquiere el número determinado de permisos de este semáforo, si todos están disponibles en el tiempo de espera especificado y el subproceso actual no se ha interrumpido la interrupción de Thread#.
[Android.Runtime.Register("tryAcquire", "(IJLjava/util/concurrent/TimeUnit;)Z", "GetTryAcquire_IJLjava_util_concurrent_TimeUnit_Handler")]
public virtual bool TryAcquire (int permits, long timeout, Java.Util.Concurrent.TimeUnit? unit);
[<Android.Runtime.Register("tryAcquire", "(IJLjava/util/concurrent/TimeUnit;)Z", "GetTryAcquire_IJLjava_util_concurrent_TimeUnit_Handler")>]
abstract member TryAcquire : int * int64 * Java.Util.Concurrent.TimeUnit -> bool
override this.TryAcquire : int * int64 * Java.Util.Concurrent.TimeUnit -> bool
Parámetros
- permits
- Int32
el número de permisos para adquirir
- timeout
- Int64
el tiempo máximo de espera de los permisos
- unit
- TimeUnit
la unidad de tiempo del timeout
argumento
Devoluciones
true
si se adquirieron todos los permisos y false
si el tiempo de espera transcurrido antes de que se adquirieran todos los permisos
- Atributos
Excepciones
si se interrumpe el subproceso actual
si permits
es negativo
Comentarios
Adquiere el número determinado de permisos de este semáforo, si todos están disponibles en el tiempo de espera especificado y el subproceso actual no se ha interrumpido la interrupción de Thread#.
Adquiere el número determinado de permisos, si están disponibles y devuelven inmediatamente, con el valor true
, reduciendo el número de permisos disponibles por la cantidad especificada.
Si los permisos insuficientes están disponibles, el subproceso actual se deshabilita con fines de programación de subprocesos y permanece inactivo hasta que se produce una de las tres cosas: <ul<>li Li>Otros subprocesos invoca uno de los #release() release
métodos para este semáforo y el subproceso actual está junto a permisos asignados y el número de permisos disponibles satisface esta solicitud; o <li>Otros subprocesos Thread#interrupt interrumpen el subproceso actual; o <li li>El tiempo de espera especificado transcurre. </ul>
Si se adquieren los permisos, se devuelve el valor true
.
Si el subproceso actual: <ul><li>tiene su estado interrumpido establecido en la entrada a este método; o <li>es Thread#interrupt interrumpida mientras espera adquirir los permisos, </ul InterruptedException
> se produce y se borra el estado interrumpido del subproceso actual. Los permisos que se asignaron a este subproceso se asignan en su lugar a otros subprocesos que intentan adquirir permisos, como si los permisos se hubieran puesto a disposición mediante una llamada a #release()
.
Si transcurre el tiempo de espera especificado, se devuelve el valor false
. Si el tiempo es menor o igual que cero, el método no esperará en absoluto. Los permisos que se asignaron a este subproceso se asignan en su lugar a otros subprocesos que intentan adquirir permisos, como si los permisos se hubieran puesto a disposición mediante una llamada a #release()
.
Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el proyecto de código abierto de Android y se usan según los términos descritos en la licencia de atribución de Creative Commons 2.5.