Skip to content

Commit

Permalink
refresh
Browse files Browse the repository at this point in the history
  • Loading branch information
Ingo60 committed Mar 8, 2014
1 parent 82b2edc commit a574149
Showing 1 changed file with 10 additions and 7 deletions.
17 changes: 10 additions & 7 deletions examples/Concurrent.fr
Original file line number Diff line number Diff line change
Expand Up @@ -41,14 +41,17 @@ mainPhil _ = do
forkIO (philosopher "Wittgenstein" fork2 fork3)
forkIO (philosopher "Nozick" fork3 fork4)
forkIO (philosopher "Mises" fork4 fork5)
forever (Thread.sleep 5000 >> table.notifyAll)
return ()

philosopher :: String -> MVar Int -> MVar Int -> IO ()
philosopher me left right = do
println (me ++ " starting.")
g <- Random.newStdGen
let phil g = do
let (tT,g1) = Random.randomR (60L, 120L) g
(eT, g2) = Random.randomR (80L, 160L) g1
let (thursty,g0) = Random.randomR (false, true) g
(tT,g1) = Random.randomR (60L, 120L) g0
(eT,g2) = Random.randomR (80L, 160L) g1
thinkTime = 300L * tT
eatTime = 300L * eT

Expand All @@ -63,27 +66,27 @@ philosopher me left right = do
Thread.sleep eatTime
println (me ++ " finished eating.")
right.put fr
println (me ++ " took down right fork.")
println (me ++ " takes down right fork. (" ++ show fr ++ ")")
left.put fl
println (me ++ " took down left fork.")
println (me ++ " takes down left fork. (" ++ show fl ++ ")")
table.notifyAll
println(me ++ " is going to think for " ++ show thinkTime ++ "ms.")
Thread.sleep thinkTime
phil g2
Nothing -> do
println (me ++ " finds right fork is already in use.")
left.put fl
println (me ++ " took down left fork.")
println (me ++ " takes down left fork again.")
table.notifyAll
println (me ++ " is going to the bar to await notifications from table.")
table.wait
println (me ++ " got notice that something changed at the table.")
phil g2

inter :: InterruptedException -> IO ()
inter _ = return ()
inter iex = stderr.println iex.getMessage >> return ()

phil g `catch` inter
phil g `catch` inter `finally` println (me ++ " ending")


getURL xx = do
Expand Down

0 comments on commit a574149

Please sign in to comment.