Class: Barrier

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

Instance Method Summary collapse

Constructor Details

#initialize(num) ⇒ Barrier

Returns a new instance of Barrier.



9
10
11
12
13
14
15
# File 'lib/jkr/utils.rb', line 9

def initialize(num)
  @mux = Mutex.new
  @cond = ConditionVariable.new

  @num = num
  @cur_num = num
end

Instance Method Details

#waitObject



17
18
19
20
21
22
23
24
25
26
27
# File 'lib/jkr/utils.rb', line 17

def wait()
  @mux.lock
  @cur_num -= 1
  if @cur_num == 0
    @cur_num = @num
    @cond.broadcast
  else
    @cond.wait(@mux)
  end
  @mux.unlock
end