diff --git a/lib/process_shared/condition_variable.rb b/lib/process_shared/condition_variable.rb index 4348d1d..3079aa6 100644 --- a/lib/process_shared/condition_variable.rb +++ b/lib/process_shared/condition_variable.rb @@ -10,7 +10,9 @@ module ProcessShared end def broadcast - waiting.times { @sem.post } + @internal.synchronize do + @waiting.read_int.times { @sem.post } + end end def signal @@ -38,12 +40,6 @@ module ProcessShared private - def waiting - @internal.synchronize do - @waiting.read_int - end - end - def inc_waiting(val = 1) @internal.synchronize do @waiting.write_int(@waiting.read_int + val)