Control.Concurrent.RWLock
Description
A simple implementation of a multiple-reader / single-writer lock, using Control.Concurrent.STM.
- data RWLock
- data RWLockState
- newRWLock :: STM RWLock
- newRWLockIO :: IO RWLock
- readRWLock :: RWLock -> STM RWLockState
- readRWLockIO :: RWLock -> IO RWLockState
- tryTakeReadLock :: RWLock -> STM Bool
- tryPutReadLock :: RWLock -> STM Bool
- takeReadLock :: RWLock -> STM ()
- putReadLock :: RWLock -> STM ()
- tryTakeReadLockIO :: RWLock -> IO Bool
- tryPutReadLockIO :: RWLock -> IO Bool
- takeReadLockIO :: RWLock -> IO ()
- putReadLockIO :: RWLock -> IO ()
- withReadLock :: RWLock -> IO a -> IO a
- tryTakeWriteLock :: RWLock -> STM Bool
- tryPutWriteLock :: RWLock -> STM Bool
- takeWriteLock :: RWLock -> STM ()
- putWriteLock :: RWLock -> STM ()
- tryTakeWriteLockIO :: RWLock -> IO Bool
- tryPutWriteLockIO :: RWLock -> IO Bool
- takeWriteLockIO :: RWLock -> IO ()
- putWriteLockIO :: RWLock -> IO ()
- withWriteLock :: RWLock -> IO a -> IO a
Documentation
data RWLockState Source
A type representing the state of a lock: available, in use by a certain number of readers, or in use by a writer.
Instances
readRWLock :: RWLock -> STM RWLockStateSource
tryTakeReadLock :: RWLock -> STM BoolSource
tryPutReadLock :: RWLock -> STM BoolSource
takeReadLock :: RWLock -> STM ()Source
putReadLock :: RWLock -> STM ()Source
tryTakeReadLockIO :: RWLock -> IO BoolSource
tryPutReadLockIO :: RWLock -> IO BoolSource
takeReadLockIO :: RWLock -> IO ()Source
putReadLockIO :: RWLock -> IO ()Source
withReadLock :: RWLock -> IO a -> IO aSource
Acquire a lock in read mode, try to execute some action, and release the lock.
tryTakeWriteLock :: RWLock -> STM BoolSource
tryPutWriteLock :: RWLock -> STM BoolSource
takeWriteLock :: RWLock -> STM ()Source
putWriteLock :: RWLock -> STM ()Source
tryTakeWriteLockIO :: RWLock -> IO BoolSource
tryPutWriteLockIO :: RWLock -> IO BoolSource
takeWriteLockIO :: RWLock -> IO ()Source
putWriteLockIO :: RWLock -> IO ()Source
withWriteLock :: RWLock -> IO a -> IO aSource
Acquire a lock in write mode, try to execute some action, and release the lock.