Re: Question about withMVar
Eric Mertens <[email protected]> Sun, 18 Jul 2021 11:00:40 -0700
| Newsgroups | gmane.comp.lang.haskell.libraries |
|---|---|
| Message-ID | <CALya091XnDy6LkhgyM0Rvdk-1R5+K5BKaymC-X6orGF3EtdeDQ@mail.gmail.com> |
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 <[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 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 > [email protected] > http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries > -- Eric Mertens _______________________________________________ Libraries mailing list [email protected] http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries