Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import Control.Concurrent.Chan
- import Data.List
- import Control.Concurrent.MVar
- import Control.Concurrent
- import Control.Monad
- data Clock = Clock (MVar Integer)
- getTicket :: Clock -> IO (Integer)
- getTicket (Clock m) = do
- old <- takeMVar m
- putMVar m (old + 1)
- return old
- -- c1
- -- -------->
- -- p-------->q
- -- ^ c2 /
- -- c4 \ / c3
- -- \ v
- -- r
- main :: IO ()
- main = do
- m <- newEmptyMVar
- clock <- Clock (m)
- putStrLn "Hello"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement