Clarification what 'atomic' means here.
authorEdward Z. Yang <ezyang@mit.edu>
Fri, 14 Jun 2013 17:58:40 +0000 (10:58 -0700)
committerEdward Z. Yang <ezyang@mit.edu>
Fri, 14 Jun 2013 17:58:40 +0000 (10:58 -0700)
Signed-off-by: Edward Z. Yang <ezyang@mit.edu>
Control/Concurrent/MVar.hs

index f941be9..016192d 100644 (file)
@@ -171,7 +171,8 @@ import Control.Exception.Base
   This is a combination of 'takeMVar' and 'putMVar'; ie. it takes the value
   from the 'MVar', puts it back, and also returns it.  This function
   is atomic only if there are no other producers (i.e. threads calling
-  'putMVar') for this 'MVar'.
+  'putMVar') for this 'MVar'.  Note: a 'tryTakeMVar' may temporarily
+  see the 'MVar' as empty while a read is occurring.
 -}
 readMVar :: MVar a -> IO a
 readMVar m =