diff options
author | shyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-07-07 07:38:25 +0000 |
---|---|---|
committer | shyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-07-07 07:38:25 +0000 |
commit | 9ff1e787f915539b1980654e3d3d2013ff5c81d2 (patch) | |
tree | 8d0fc9ca5b4dbfa9885dc56862292d55091bcaac /ruby_1_8_6/sample/philos.rb | |
parent | 441546edcfbb1b346c87b69c5f578d1a0e522e06 (diff) |
wrong commit; sorryv1_8_6_269
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/tags/v1_8_6_269@17938 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ruby_1_8_6/sample/philos.rb')
-rw-r--r-- | ruby_1_8_6/sample/philos.rb | 54 |
1 files changed, 0 insertions, 54 deletions
diff --git a/ruby_1_8_6/sample/philos.rb b/ruby_1_8_6/sample/philos.rb deleted file mode 100644 index 119e7c36b9..0000000000 --- a/ruby_1_8_6/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 |