putMVar
Put a value into an
MVar. If the
MVar is currently full,
putMVar will wait until it becomes empty.
There are two further important properties of
putMVar:
- putMVar is single-wakeup. That is, if there are multiple
threads blocked in putMVar, and the MVar becomes empty,
only one thread will be woken up. The runtime guarantees that the
woken thread completes its putMVar operation.
- When multiple threads are blocked on an MVar, they are
woken up in FIFO order. This is useful for providing fairness
properties of abstractions built using MVars.
Put a value into an
MVar. If the
MVar is currently full,
putMVar will wait until it becomes empty.
There are two further important properties of
putMVar:
- putMVar is single-wakeup. That is, if there are multiple
threads blocked in putMVar, and the MVar becomes empty,
only one thread will be woken up. The runtime guarantees that the
woken thread completes its putMVar operation.
- When multiple threads are blocked on an MVar, they are
woken up in FIFO order. This is useful for providing fairness
properties of abstractions built using MVars.
Put a value into a MVar. If there is already a value there,
this will block until that value has been taken, at which point the
value will be stored.
Put a value into an
MVar. If the
MVar is currently full,
putMVar will wait until it becomes empty.
There are two further important properties of
putMVar:
- putMVar is single-wakeup. That is, if there are multiple
threads blocked in putMVar, and the MVar becomes empty,
only one thread will be woken up. The runtime guarantees that the
woken thread completes its putMVar operation.
- When multiple threads are blocked on an MVar, they are
woken up in FIFO order. This is useful for providing fairness
properties of abstractions built using MVars.
Put into a MVar, possibly waking up some threads.
A non-blocking version of
putMVar. The
tryPutMVar
function attempts to put the value
a into the
MVar,
returning
True if it was successful, or
False otherwise.
A non-blocking version of
putMVar. The
tryPutMVar
function attempts to put the value
a into the
MVar,
returning
True if it was successful, or
False otherwise.
Attempt to put a value in a
MVar non-blockingly, returning
True (and filling the
MVar) if there was nothing
there, otherwise returning
False.
Try to put into a MVar, possibly waking up some threads.