-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Multiple-read / single-write locks -- -- A simple implementation of a multiple-reader / single-writer lock, -- using STM. @package rwlock @version 0.0.0.2 -- | A simple implementation of a multiple-reader / single-writer lock, -- using Control.Concurrent.STM. module Control.Concurrent.RWLock data RWLock -- | A type representing the state of a lock: available, in use by a -- certain number of readers, or in use by a writer. data RWLockState Open :: RWLockState Readers :: Int -> RWLockState Writing :: 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 () -- | Acquire a lock in read mode, try to execute some action, and release -- the lock. 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 () -- | Acquire a lock in write mode, try to execute some action, and release -- the lock. withWriteLock :: RWLock -> IO a -> IO a instance Typeable RWLockState instance Eq RWLockState instance Show RWLockState instance Data RWLockState