Class: Ji2p::Utils::BlockingQueue

Inherits:
Object
  • Object
show all
Defined in:
lib/ji2p/utils/blocking_queue.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeBlockingQueue

Returns a new instance of BlockingQueue.



8
9
10
11
12
# File 'lib/ji2p/utils/blocking_queue.rb', line 8

def initialize
  @queue = Array.new
  @mutex = Mutex.new
  @cv    = ConditionVariable.new
end

Instance Attribute Details

#cvObject (readonly)

Returns the value of attribute cv.



6
7
8
# File 'lib/ji2p/utils/blocking_queue.rb', line 6

def cv
  @cv
end

#mutexObject (readonly)

Returns the value of attribute mutex.



6
7
8
# File 'lib/ji2p/utils/blocking_queue.rb', line 6

def mutex
  @mutex
end

#queueObject (readonly)

Returns the value of attribute queue.



6
7
8
# File 'lib/ji2p/utils/blocking_queue.rb', line 6

def queue
  @queue
end

Instance Method Details

#popObject



21
22
23
24
25
26
27
28
29
# File 'lib/ji2p/utils/blocking_queue.rb', line 21

def pop
  @mutex.synchronize do
    while @queue.empty?
      @cv.wait(@mutex)
    end

    @queue.pop
  end
end

#push(ele) ⇒ Object



14
15
16
17
18
19
# File 'lib/ji2p/utils/blocking_queue.rb', line 14

def push(ele)
  @mutex.synchronize do
    @queue.push ele
    @cv.signal
  end
end