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 finalizan debido a que se alcanza el tiempo de espera de las esperas que finalizan debido a que se señaliza el semáforo.

Resumen del método de instancia colapsar

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
  @lock = Mutex (exclusión mutua).Nuevo
  @cv = ::Variable de condición.Nuevo
  @queue = []
end

Detalles del método de instancia

#broadcastobjeto

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 transmisión
  @lock.sincronizar hacer
    @queue.push(true)
    @cv.transmisión
  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
  @lock.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 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.



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

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