|
Data.IORef | Portability | portable | Stability | experimental | Maintainer | libraries@haskell.org |
|
|
|
|
|
Description |
Mutable references in the IO monad.
|
|
Synopsis |
|
|
|
|
IORefs
|
|
data IORef a |
A mutable variable in the IO monad
| Instances | |
|
|
newIORef :: a -> IO (IORef a) |
Build a new IORef
|
|
readIORef :: IORef a -> IO a |
Read the value of an IORef
|
|
writeIORef :: IORef a -> a -> IO () |
Write a new value into an IORef
|
|
modifyIORef :: IORef a -> (a -> a) -> IO () |
Mutate the contents of an IORef
|
|
atomicModifyIORef :: IORef a -> (a -> (a, b)) -> IO b |
Atomically modifies the contents of an IORef.
This function is useful for using IORef in a safe way in a multithreaded
program. If you only have one IORef, then using atomicModifyIORef to
access and modify it will prevent race conditions.
Extending the atomicity to multiple IORefs is problematic, so it
is recommended that if you need to do anything more complicated
then using Control.Concurrent.MVar.MVar instead is a good idea.
|
|
mkWeakIORef :: IORef a -> IO () -> IO (Weak (IORef a)) |
Make a Weak pointer to an IORef
|
|
Produced by Haddock version 2.3.0 |