kein Deadlock (trivial).
forM [ 1 .. num ] $ \ p -> forkIO $ forever $ do
atomically $ do
take $ left p
take $ right p
atomically $ drop $ left p
atomically $ drop $ right p
take f = do
busy <- readTVar f
when busy $ retry
writeTVar f True
nicht fair. Vergleiche Diskussion hier:
http://thread.gmane.org/gmane.comp.lang.haskell.parallel/305