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