Question about withMVar
Harendra Kumar
harendra.kumar at gmail.com
Sun Jul 18 13:49:24 UTC 2021
The documentation of withMVar (in Control.Concurrent.MVar module of base
package) says:
{-| 'withMVar' is an exception-safe wrapper for operating on the
contents of an 'MVar'. This operation is exception-safe: it will
replace the original contents of the 'MVar' if an exception is raised
(see "Control.Exception"). However, it is only atomic if there are
no other producers for this 'MVar'.-}withMVar :: MVar a -> (a -> IO
b) -> IO bwithMVar m io = mask $ \restore -> do a <- takeMVar m
b <- restore (io a) `onException` putMVar m a putMVar m a return
b
Can someone shed some light on what is meant by the statement -
"However, it is only atomic if there are no other producers for this 'MVar'."?
I hope this is the right mailing list for this question.
Thanks,
Harendra
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/libraries/attachments/20210718/dcb581f2/attachment.html>
More information about the Libraries
mailing list