# # 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 lue='ruby_1_3'>ruby_1_3 The Ruby Programming Language
summaryrefslogtreecommitdiff
path: root/tool/test_for_warn_bundled_gems
AgeCommit message (Expand)Author
2023-12-16Added simple test scriptHiroshi SHIBATA
2023-12-16Added test for sub-feature like bigdecimal/utilHiroshi SHIBATA
2023-12-16Use minimum arguments for BootsnapHiroshi SHIBATA
2023-12-15Explained about test_for_warn_bundled_gemsHiroshi SHIBATA
2023-12-15* append newline at EOF. [ci skip]git
2023-12-15Added test case of dash gem like net-smtpHiroshi SHIBATA
2023-12-15Added test case of bootsnapHiroshi SHIBATA
2023-12-15Added test case of bundle execHiroshi SHIBATA
2023-12-15Added test case of bundled gems dependenciesHiroshi SHIBATA
2023-12-15Added basic test case of bundled gems warningHiroshi SHIBATA