Classe: Mongo::DistinguishingSemafore Private

Herda:
Objeto
  • Objeto
mostrar tudo
Definido em:
build/ruby-driver-v2.19/lib/mongo/distinguishing_semafore.rb

Visão geral

Esta classe faz parte de uma API privada. Evite usar essa classe, se possível, pois ela pode ser removida ou alterada no futuro.

Este é um semáforo que distingue as esperas que terminam devido ao tempo limite atingido das esperas que terminam devido à sinalização do semáforo.

Recolhimento do Resumo do método de instância

Detalhes do construtor

#initializeDistinguishingSemafore

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Retorna uma nova instância de DistinguishingSemafore.



24
25
26
27
28
# File 'build/ruby-driver-v2.19/lib/mongo/distinguishing_semafore.rb', linha 24

def inicializar
  @ bloqueio = Mutex.Novo
  @cv = ::CondiçãoVariável.Novo
  @queue = []
end

Detalhes do método de instância

#transmissãoObjeto

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.



44
45
46
47
48
49
# File 'build/ruby-driver-v2.19/lib/mongo/distinguishing_semafore.rb', linha 44

def transmissão
  @ bloqueio.sincronizar fazer
    @queue.push(true)
    @cv.transmissão
  end
end

#signalObject

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.



51
52
53
54
55
56
# File 'build/ruby-driver-v2.19/lib/mongo/distinguishing_semafore.rb', linha 51

def sinal
  @ bloqueio.sincronizar fazer
    @queue.push(true)
    @cv.sinal
  end
end

#wait(timeout = nil) ➤ true | false

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Aguarda que o semáforo seja sinalizado até o tempo limite segundos. Se o semáforo não for sinalizado, retornará após segundos de tempo limite.

Retorna:

  • (verdadeiro | falso)

    true se o semáforo foi sinalizado, false se o tempo limite foi atingido.



35
36
37
38
39
40
41
42
# File 'build/ruby-driver-v2.19/lib/mongo/distinguishing_semafore.rb', linha 35

def esperar(timeout = nada)
  @ bloqueio.sincronizar fazer
    @cv.esperar(@ bloqueio, timeout)
    (!@queue.vazio?).toque fazer
      @queue.Limpar
    end
  end
end