From 54ec1c4fe81672ca66f327ef6ae170f458cd79e5 Mon Sep 17 00:00:00 2001 From: shyouhei Date: Wed, 15 Aug 2007 20:57:30 +0000 Subject: sorry. I made wrong tags. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/tags/v1_8_5_54@13009 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ruby_1_8_5/sample/philos.rb | 54 --------------------------------------------- 1 file changed, 54 deletions(-) delete mode 100644 ruby_1_8_5/sample/philos.rb (limited to 'ruby_1_8_5/sample/philos.rb') 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 -- cgit v1.2.3