When do MVar operations guarantee uninterrupted operation?

The documentation forControl.Exception describes which operations may have asynchronous exceptions, even inside the masked block , saying: "the following operations ensure that they will not be interrupted"

takeMVar if MVar is definitely full, and conversely putMVar if MVar is definitely empty

In what cases is MVar"definitely" full or empty from the point of view of the compiler? Is this reasonable enough to allow me to speculate on whether my code will crash without handling async exceptions in every operation MVar?

+4
source share
1 answer

, .

, MVar , takeMVar . MVar putMVar, , .

, MVar , , , , .

+4

All Articles