diff options
author | shyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-08-15 20:57:30 +0000 |
---|---|---|
committer | shyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-08-15 20:57:30 +0000 |
commit | 54ec1c4fe81672ca66f327ef6ae170f458cd79e5 (patch) | |
tree | 45a752c60a9a08d681a792b70f43c89903b638a2 /ruby_1_8_5/sample/philos.rb | |
parent | d464704f111d211c1f1ff9ef23ef1d755054be00 (diff) |
sorry. I made wrong tags.v1_8_5_54
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/tags/v1_8_5_54@13009 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ruby_1_8_5/sample/philos.rb')
-rw-r--r-- | ruby_1_8_5/sample/philos.rb | 54 |
1 files changed, 0 insertions, 54 deletions
diff --git a/ruby_1_8_5/sample/philos.rb b/ruby_1_8_5/sample/philos.rb deleted file mode 100644 index 119e7c36b9..0000000000 --- a/ruby_1_8_5/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 |