Question about withMVar
Eric Mertens
emertens at gmail.com
Sun Jul 18 18:00:40 UTC 2021
The action is atomic as long as while one thread is using withMVar another
thread isn't using putMVar
On Sun, Jul 18, 2021 at 6:49 AM Harendra Kumar <harendra.kumar at gmail.com>
wrote:
> 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
>
> _______________________________________________
> Libraries mailing list
> Libraries at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
>
--
Eric Mertens
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/libraries/attachments/20210718/d97ab5df/attachment.html>
More information about the Libraries
mailing list