Sha256: b0750ca90db655f04a57fb34708d8cca48f6306d5c7a3b0f9cf05b0ed33f2c50
Contents?: true
Size: 647 Bytes
Versions: 54
Compression:
Stored size: 647 Bytes
Contents
require 'concurrent/atomic/condition' module Concurrent class WaitableList def initialize @mutex = Mutex.new @condition = Condition.new @list = [] end def size @mutex.synchronize { @list.size } end def empty? @mutex.synchronize { @list.empty? } end def put(value) @mutex.synchronize do @list << value @condition.signal end end def delete(value) @mutex.synchronize { @list.delete(value) } end def take @mutex.synchronize do @condition.wait(@mutex) while @list.empty? @list.shift end end end end
Version data entries
54 entries across 54 versions & 1 rubygems