diff options
author | usa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-05-14 11:39:21 +0000 |
---|---|---|
committer | usa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-05-14 11:39:21 +0000 |
commit | e76eb06feb024828034379797129d92522e28516 (patch) | |
tree | 1326c625c233ba2554043203a7697f5e3d4c49e5 /ruby_1_9_3/sample/philos.rb | |
parent | aa6e98139c8e1ea442fb2182341aaa08ff55b529 (diff) | |
parent | bede15ac5e701ed08f3fc64c2dba03d3f393c652 (diff) |
add tag v1_9_3_426v1_9_3_426
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/tags/v1_9_3_426@40737 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ruby_1_9_3/sample/philos.rb')
-rw-r--r-- | ruby_1_9_3/sample/philos.rb | 54 |
1 files changed, 0 insertions, 54 deletions
diff --git a/ruby_1_9_3/sample/philos.rb b/ruby_1_9_3/sample/philos.rb deleted file mode 100644 index 5c8f43c819..0000000000 --- a/ruby_1_9_3/sample/philos.rb +++ /dev/null @@ -1,54 +0,0 @@ -# -# The Dining Philosophers - thread example -# -require "thread" - -srand -#srand -N=9 # number of philosophers -$forks = [] -for i in 0..N-1 - $forks[i] = Mutex.new -end -$state = "-o"*N - -def wait - sleep rand(20)/10.0 -end - -def think(n) - wait -end - -def eat(n) - wait -end - -def philosopher(n) - while true - think n - $forks[n].lock - if not $forks[(n+1)%N].try_lock - $forks[n].unlock # avoid deadlock - next - end - $state[n*2] = ?|; - $state[(n+1)%N*2] = ?|; - $state[n*2+1] = ?*; - print $state, "\n" - eat(n) - $state[n*2] = ?-; - $state[(n+1)%N*2] = ?-; - $state[n*2+1] = ?o; - print $state, "\n" - $forks[n].unlock - $forks[(n+1)%N].unlock - end -end - -for n in 0..N-1 - Thread.start(n){|i| philosopher(i)} - sleep 0.1 -end - -sleep |