summaryrefslogtreecommitdiff
path: root/ruby_1_9_3/sample/philos.rb
diff options
context:
space:
mode:
authorusa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-05-14 11:39:21 +0000
committerusa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-05-14 11:39:21 +0000
commite76eb06feb024828034379797129d92522e28516 (patch)
tree1326c625c233ba2554043203a7697f5e3d4c49e5 /ruby_1_9_3/sample/philos.rb
parentaa6e98139c8e1ea442fb2182341aaa08ff55b529 (diff)
parentbede15ac5e701ed08f3fc64c2dba03d3f393c652 (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.rb54
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