3 #ifndef PROVIDE_CONCURRENT
4 module PrelConc () where
12 -- Forking and suchlike
16 {-threadDelay, threadWaitRead, threadWaitWrite, -}
19 MVar, newMVar, newEmptyMVar, takeMVar, putMVar, readMVar, swapMVar
23 --infixr 0 `par`, `fork`
30 forkIO :: IO () -> IO ThreadId
31 forkIO action = primFork (unsafePerformIO action)
33 killThread :: ThreadId -> IO ()
34 killThread = primKillThread
38 instance Eq (MVar a) where (==) = primSameMVar
40 newEmptyMVar :: IO (MVar a)
41 newMVar :: a -> IO (MVar a)
42 putMVar :: MVar a -> a -> IO ()
43 takeMVar :: MVar a -> IO a
44 readMVar :: MVar a -> IO a
45 swapMVar :: MVar a -> a -> IO a
47 newEmptyMVar = primNewMVar
49 takeMVar = primTakeMVar
52 newEmptyMVar >>= \ mvar ->
57 takeMVar mvar >>= \ value ->
62 takeMVar mvar >>= \ old ->
68 #endif /* PROVIDE_CONCURRENT */