Clase: Mongo::DistinguishingSemaphore Privado

Hereda:
Objeto
  • Objeto
Mostrar todo
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

Detalles del constructor

#inicializarSemá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ónObjeto

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

#signalObject

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.

Devuelve:

  • (verdadero | falso)

    verdadero si se señaló el semáforo, falso si se alcanzó el 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