Clase: Mongo::DistinguishingSemaphore Privado

Hereda:
Objeto
  • Objeto
Mostrar todo
Definido en:
lib/mongo/separador_distintivo.rb

Overview

Esta clase forma parte de una API privada. Evita usar esta clase si es posible, ya que puede ser eliminada o modificada en el futuro.

Este es un semáforo que distingue las esperas que terminan por la expiración del tiempo de espera de las que terminan por el lanzamiento del semáforo.

Resumen del método de instancia colapsar

Detalles del Constructor

#inicializarDistinguishingSemaphore

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Devuelve una nueva instancia de DistinguishingSemaphore.



23
24
25
26
27
# Archivo 'lib/mongo/distinguishing_semaphore.rb', línea 23

def inicializar
  @lock = Mutex (exclusión mutua).Nuevo
  @cv = ::ConditionVariable.Nuevo
  @queue = []
end

Detalles del método de instancia

#broadcastobjeto

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.



43
44
45
46
47
48
# Archivo 'lib/mongo/distinguishing_semaphore.rb', línea 43

def transmisión
  @lock.sincronizar hacer
    @queue.push(true)
    @cv.transmisión
  end
end

#signalObject

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.



50
51
52
53
54
55
# Archivo 'lib/mongo/distinguishing_semaphore.rb', línea 50

def señal
  @lock.sincronizar hacer
    @queue.push(true)
    @cv.señal
  end
end

#esperar(tiempo_de_espera = nil) ⇒ verdadero | falso

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Espera a que el semáforo sea señalizado hasta los segundos de tiempo de espera. Si no se señala el semáforo, se devuelve después de los segundos de tiempo de espera.

Devuelve:

  • (true | false)

    verdadero si el semáforo fue activado, falso si se alcanzó el tiempo de espera.



34
35
36
37
38
39
40
41
# Archivo 'lib/mongo/distinguishing_semaphore.rb', línea 34

def esperar(tiempo de espera = nulo)
  @lock.sincronizar hacer
    @cv.esperar(@lock, tiempo de espera)
    (!@queue.¿vacío?).tocar hacer
      @queue.borrar
    end
  end
end