summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsimonmar <unknown>2000-10-02 11:06:19 +0000
committersimonmar <unknown>2000-10-02 11:06:19 +0000
commite9e111d726ae93939d4dc16d548d6f011f7215c8 (patch)
treedc1f98ef9d73a0d01d4d3dacbc84655f9d19ba47
parent334e3c04376a84c977c2d5f29d384daa38a76913 (diff)
downloadhaskell-e9e111d726ae93939d4dc16d548d6f011f7215c8.tar.gz
[project @ 2000-10-02 11:06:19 by simonmar]
- move readMVar and swapMVar from PrelConc to concurrent - add the following exception-safe MVar operations: withMVar :: MVar a -> (a -> IO b) -> IO b modifyMVar :: MVar a -> (a -> IO (a,b)) -> IO b modifyMVar_ :: MVar a -> (a -> IO a) -> IO () - re-implement readMVar and swapMVar in an exception-safe way. - re-implement the Chan operations using withMVar et al.
-rw-r--r--ghc/lib/std/PrelConc.lhs16
1 files changed, 1 insertions, 15 deletions
diff --git a/ghc/lib/std/PrelConc.lhs b/ghc/lib/std/PrelConc.lhs
index 4594a6bfcd..7ad1038c18 100644
--- a/ghc/lib/std/PrelConc.lhs
+++ b/ghc/lib/std/PrelConc.lhs
@@ -1,5 +1,5 @@
% -----------------------------------------------------------------------------
-% $Id: PrelConc.lhs,v 1.20 2000/07/07 11:03:58 simonmar Exp $
+% $Id: PrelConc.lhs,v 1.21 2000/10/02 11:06:19 simonmar Exp $
%
% (c) The University of Glasgow, 1994-2000
%
@@ -33,8 +33,6 @@ module PrelConc
, newEmptyMVar -- :: IO (MVar a)
, takeMVar -- :: MVar a -> IO a
, putMVar -- :: MVar a -> a -> IO ()
- , readMVar -- :: MVar a -> IO a
- , swapMVar -- :: MVar a -> a -> IO a
, tryTakeMVar -- :: MVar a -> IO (Maybe a)
, isEmptyMVar -- :: MVar a -> IO Bool
@@ -136,18 +134,6 @@ newMVar value =
putMVar mvar value >>
return mvar
-readMVar :: MVar a -> IO a
-readMVar mvar =
- takeMVar mvar >>= \ value ->
- putMVar mvar value >>
- return value
-
-swapMVar :: MVar a -> a -> IO a
-swapMVar mvar new =
- takeMVar mvar >>= \ old ->
- putMVar mvar new >>
- return old
-
-- tryTakeMVar is a non-blocking takeMVar
tryTakeMVar :: MVar a -> IO (Maybe a)
tryTakeMVar (MVar m) = IO $ \ s ->