Safe Haskell | Safe |
---|---|
Language | Haskell98 |
A dual lock can be taken in either exclusive or shared mode, and also supports switching (atomically) from one mode to the other.
- data DualLockShared = DualLockShared !FilePath !FileLock !FileLock
- data DualLock = DualLock !FilePath !FileLock !FileLock
- dualLockShared :: FilePath -> IO DualLockShared
- dualLock :: FilePath -> IO DualLock
- unlockShared :: DualLockShared -> IO ()
- unlock :: DualLock -> IO ()
- switchLocks :: DualLockShared -> IO DualLock
- switchLocks2 :: DualLock -> IO DualLockShared
Documentation
unlockShared :: DualLockShared -> IO () Source #
switchLocks :: DualLockShared -> IO DualLock Source #
N.B. That two simultaneous attempts to switch locks will deadlock. Please protect a critical
section that switches locks with some other lock, to ensure this doesn't happen. For instance,
the garbage collector protects its use of switchLocks
on a dual lock, with an exclusive
writer lock.
switchLocks2 :: DualLock -> IO DualLockShared Source #
Switching from an exclusive to a shared lock may be done at any time.