diff options
Diffstat (limited to 'ruby_1_8_6/test/thread/lbtest.rb')
-rwxr-xr-x | ruby_1_8_6/test/thread/lbtest.rb | 51 |
1 files changed, 0 insertions, 51 deletions
diff --git a/ruby_1_8_6/test/thread/lbtest.rb b/ruby_1_8_6/test/thread/lbtest.rb deleted file mode 100755 index 10bb90185f..0000000000 --- a/ruby_1_8_6/test/thread/lbtest.rb +++ /dev/null @@ -1,51 +0,0 @@ -#! /usr/bin/ruby -require 'thread' - -class LocalBarrier - def initialize(n) - @wait = Queue.new - @done = Queue.new - @keeper = begin_keeper(n) - end - - def sync - @done.push(true) - @wait.pop - end - - def join - @keeper.join - end - - private - def begin_keeper(n) - Thread.start do - n.times do - @done.pop - end - n.times do - @wait.push(true) - end - end - end -end - -n = 10 - -lb = LocalBarrier.new(n) - -(n - 1).times do |i| - Thread.start do - sleep((rand(n) + 1) / 10.0) - puts "#{i}: done" - lb.sync - puts "#{i}: cont" - end -end - -lb.sync -puts "#{n-1}: done" - -# lb.join # leaving waiting threads. - -puts "exit." |