Clase: Mongo::DistinguishingSemaphore Privado
- Hereda:
-
Objeto
- Objeto
- Mongo::Semáforo distintivo
- Definido en:
- lib/mongo/distinguishing_semaphore.rb
Overview
Esta clase forma parte de una API privada. Debe evitar usarla siempre que sea posible, ya que podría eliminarse o modificarse en el futuro.
Este es un semáforo que distingue las esperas que finalizan debido a que se alcanza el tiempo de espera de las esperas que finalizan debido a que se señaliza el semáforo.
Colapso del resumen del método de instancia
- #difusión ⇒ Objeto privada
-
#inicializar ⇒ Semáforo distintivo
constructor
privada
Una nueva instancia de DistinguishingSemaphore.
- #signal ⇒ Object privada
-
#esperar(tiempo de espera = nulo) ⇒ verdadero | falso
privada
Espera a que se envíe la señal al semáforo hasta que se agoten los segundos.
Detalles del constructor
#inicializar ⇒ Semáforo distintivo
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
Devuelve una nueva instancia de DistinguishingSemaphore.
24 25 26 27 28 |
# Archivo 'lib/mongo/distinguishing_semaphore.rb', línea 24 def inicializar @cerrar = Mutex.Nuevo @cv = ::Variable de condición.Nuevo @queue = [] end |
Detalles del método de instancia
#difusión ⇒ Objeto
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
44 45 46 47 48 49 |
# Archivo 'lib/mongo/distinguishing_semaphore.rb', línea 44 def transmitir @cerrar.sincronizar hacer @queue.Push(true) @cv.transmitir end end |
#signal ⇒ Object
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
51 52 53 54 55 56 |
# Archivo 'lib/mongo/distinguishing_semaphore.rb', línea 51 def señal @cerrar.sincronizar hacer @queue.Push(true) @cv.señal end end |
#esperar(tiempo de espera = nulo) ⇒ verdadero | falso
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
Espera a que se señalice el semáforo hasta que se agoten los segundos de tiempo de espera. Si no se señaliza, regresa después de que transcurran los segundos de tiempo de espera.
35 36 37 38 39 40 41 42 |
# Archivo 'lib/mongo/distinguishing_semaphore.rb', línea 35 def esperar(tiempo de espera = nulo) @cerrar.sincronizar hacer @cv.esperar(@cerrar, tiempo de espera) (!@queue.¿vacío?).grifo hacer @queue.borrar end end end |