类:Mongo::DistinguishingSemaphore Private

继承:
对象
  • 对象
显示全部
定义于:
build/Ruby-driver-v 2.19 /lib/mongo/distinguishing_semaphore.rb

Overview

此类是私有 API 的一部分。 应尽可能避免使用此类,因为它将来可能会被删除或更改。

这是一个信号量,用于区分由于达到超时而结束的等待和由于收到信号量而结束的等待。

实例方法摘要折叠

构造函数详情

#初始化=" DistinguishingSemaphore "

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

返回 DistinguishingSemaphore 的新实例。



24
25
26
27
28
# File 'build/Ruby-driver-v 2.19 /lib/mongo/distinguishing_semaphore.rb', 第24行

def 初始化
   = 互斥锁.new
  @cv = ::ConditionVariable.new
  @queue = []
end

实例方法详细信息

#广播对象

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。



44
45
46
47
48
49
# File 'build/Ruby-driver-v 2.19 /lib/mongo/distinguishing_semaphore.rb', 第44行

def 广播
  .同步 do
    @queue.推动(true)
    @cv.广播
  end
end

#signalObject

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。



51
52
53
54
55
56
# File 'build/Ruby-driver-v 2.19 /lib/mongo/distinguishing_semaphore.rb', 第51行

def 信号
  .同步 do
    @queue.推动(true)
    @cv.信号
  end
end

# wait (timeout = nil) ⇒ true | false

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

在 timeout 秒内等待信号量收到信号。 如果信号量未收到信号,则在超时秒数后返回。

返回:

  • ( true | false )

    如果已发出信号量,则为 true;如果已达到超时,则为 false。



35
36
37
38
39
40
41
42
# File 'build/Ruby-driver-v 2.19 /lib/mongo/distinguishing_semaphore.rb', 第35行

def wait(超时 = nil)
  .同步 do
    @cv.wait(, 超时)
    (!@queue.空?).点击 do
      @queue.清除
    end
  end
end