Re: Question about withMVar

Matthew Pickering <[email protected]> Sun, 18 Jul 2021 15:01:48 +0100
Newsgroups gmane.comp.lang.haskell.libraries
Message-ID <CALuQ0m9SpbkDG3GkW4y2ykMhW6Ct0Pkn-nEio4df+H5GHTfv0g@mail.gmail.com>
This recent commit attempted to clarify the situation.

https://gitlab.haskell.org/ghc/ghc/-/commit/bb8e0df8f4187a4f4d0788dd3da3ef6f9268d378

Does that help?

On Sun, Jul 18, 2021 at 2:49 PM Harendra Kumar <[email protected]> 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 b
> withMVar 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
> [email protected]
> http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
_______________________________________________
Libraries mailing list
[email protected]
http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries