Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Synopsis
- module Data.IORef
- modifyIORef' :: IORef a -> (a -> a) -> IO ()
- atomicModifyIORef' :: IORef a -> (a -> (a, b)) -> IO b
- atomicWriteIORef :: IORef a -> a -> IO ()
Documentation
module Data.IORef
modifyIORef' :: IORef a -> (a -> a) -> IO () #
Strict version of modifyIORef
.
This is not an atomic update, consider using atomicModifyIORef'
when
operating in a multithreaded environment.
Since: base-4.6.0.0
atomicModifyIORef' :: IORef a -> (a -> (a, b)) -> IO b #
Strict version of atomicModifyIORef
. This forces both
the value stored in the IORef
and the value returned. The new value
is installed in the IORef
before the returned value is forced.
So
atomicModifyIORef' ref (x -> (x+1, undefined))
will increment the IORef
and then throw an exception in the calling
thread.
This function imposes a memory barrier, preventing reordering; see Data.IORef for details.
Since: base-4.6.0.0
atomicWriteIORef :: IORef a -> a -> IO () #
Variant of writeIORef
. The prefix "atomic" relates to a fact that
it imposes a reordering barrier, similar to atomicModifyIORef
.
Such a write will not be reordered with other reads
or writes even on CPUs with weak memory model.
Since: base-4.6.0.0