| Stability | provisional | 
|---|---|
| Maintainer | Nicolas Pouillard <nicolas.pouillard@gmail.com> | 
| Safe Haskell | Safe-Infered | 
Data.IORef.Strict
Description
- data IORef a
- newIORef :: NFData sa => sa -> SIO (IORef sa)
- readIORef :: IORef a -> SIO a
- writeIORef :: NFData sa => IORef sa -> sa -> SIO ()
- modifyIORef :: NFData sa => IORef sa -> (sa -> sa) -> SIO ()
- atomicModifyIORef :: (NFData sa, NFData sb) => IORef sa -> (sa -> (sa, sb)) -> SIO sb
- mkWeakIORef :: IORef a -> SIO () -> SIO (Weak (IORef a))
Documentation
newIORef :: NFData sa => sa -> SIO (IORef sa)Source
Build a new IORef, but force the value before storing it.
writeIORef :: NFData sa => IORef sa -> sa -> SIO ()Source
Deeply force a value and write it into an IORef
atomicModifyIORef :: (NFData sa, NFData sb) => IORef sa -> (sa -> (sa, sb)) -> SIO sbSource
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.