Implement tryAtomicReadMVar.
[packages/base.git] / GHC / Conc.lhs
1 \begin{code}
2 {-# LANGUAGE Unsafe #-}
3 {-# LANGUAGE CPP, NoImplicitPrelude #-}
4 {-# OPTIONS_GHC -fno-warn-missing-signatures #-}
5 {-# OPTIONS_HADDOCK not-home #-}
6
7 -----------------------------------------------------------------------------
8 -- |
9 -- Module      :  GHC.Conc
10 -- Copyright   :  (c) The University of Glasgow, 1994-2002
11 -- License     :  see libraries/base/LICENSE
12 -- 
13 -- Maintainer  :  cvs-ghc@haskell.org
14 -- Stability   :  internal
15 -- Portability :  non-portable (GHC extensions)
16 --
17 -- Basic concurrency stuff.
18 -- 
19 -----------------------------------------------------------------------------
20
21 -- No: #hide, because bits of this module are exposed by the stm package.
22 -- However, we don't want this module to be the home location for the
23 -- bits it exports, we'd rather have Control.Concurrent and the other
24 -- higher level modules be the home.  Hence:
25
26 #include "Typeable.h"
27
28 -- #not-home
29 module GHC.Conc
30         ( ThreadId(..)
31
32         -- * Forking and suchlike
33         , forkIO
34         , forkIOWithUnmask
35         , forkOn
36         , forkOnWithUnmask
37         , numCapabilities
38         , getNumCapabilities
39         , setNumCapabilities
40         , getNumProcessors
41         , numSparks
42         , childHandler
43         , myThreadId
44         , killThread
45         , throwTo
46         , par
47         , pseq
48         , runSparks
49         , yield
50         , labelThread
51         , mkWeakThreadId
52
53         , ThreadStatus(..), BlockReason(..)
54         , threadStatus
55         , threadCapability
56
57         -- * Waiting
58         , threadDelay
59         , registerDelay
60         , threadWaitRead
61         , threadWaitWrite
62         , threadWaitReadSTM
63         , threadWaitWriteSTM
64         , closeFdWith
65
66         -- * TVars
67         , STM(..)
68         , atomically
69         , retry
70         , orElse
71         , throwSTM
72         , catchSTM
73         , alwaysSucceeds
74         , always
75         , TVar(..)
76         , newTVar
77         , newTVarIO
78         , readTVar
79         , readTVarIO
80         , writeTVar
81         , unsafeIOToSTM
82
83         -- * Miscellaneous
84         , withMVar
85 #ifdef mingw32_HOST_OS
86         , asyncRead
87         , asyncWrite
88         , asyncDoProc
89
90         , asyncReadBA
91         , asyncWriteBA
92 #endif
93
94 #ifndef mingw32_HOST_OS
95         , Signal, HandlerFun, setHandler, runHandlers
96 #endif
97
98         , ensureIOManagerIsRunning
99         , ioManagerCapabilitiesChanged
100
101 #ifdef mingw32_HOST_OS
102         , ConsoleEvent(..)
103         , win32ConsoleHandler
104         , toWin32ConsoleEvent
105 #endif
106         , setUncaughtExceptionHandler
107         , getUncaughtExceptionHandler
108
109         , reportError, reportStackOverflow
110         ) where
111
112 import GHC.Conc.IO
113 import GHC.Conc.Sync
114
115 #ifndef mingw32_HOST_OS
116 import GHC.Conc.Signal
117 #endif
118
119 \end{code}