Sha256: b804f6e1a1bb989213d1cb047c06739dafa55e9a52f2d9aee10039f99daf8571
Contents?: true
Size: 399 Bytes
Versions: 2
Compression:
Stored size: 399 Bytes
Contents
require 'monitor' module Tusk class Latch def initialize(count = 1) @count = count @lock = Monitor.new @cv = @lock.new_cond end def release @lock.synchronize do @count -= 1 if @count > 0 @cv.broadcast if @count.zero? end end def await @lock.synchronize do @cv.wait_while { @count > 0 } end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
tusk-1.1.0 | lib/tusk/latch.rb |
tusk-1.0.0 | lib/tusk/latch.rb |