Copyright | Will Thompson, Iñaki García Etxebarria and Jonas Platte |
---|---|
License | LGPL-2.1 |
Maintainer | Iñaki García Etxebarria (garetxe@gmail.com) |
Safe Haskell | None |
Language | Haskell2010 |
The GRecMutex struct is an opaque data structure to represent a recursive mutex. It is similar to a #GMutex with the difference that it is possible to lock a GRecMutex multiple times in the same thread without deadlock. When doing so, care has to be taken to unlock the recursive mutex as often as it has been locked.
If a #GRecMutex is allocated in static storage then it can be used without initialisation. Otherwise, you should call g_rec_mutex_init() on it and g_rec_mutex_clear() when done.
A GRecMutex should only be accessed with the g_rec_mutex_ functions.
- newtype RecMutex = RecMutex (ForeignPtr RecMutex)
- newZeroRecMutex :: MonadIO m => m RecMutex
- noRecMutex :: Maybe RecMutex
- data RecMutexClearMethodInfo
- recMutexClear :: MonadIO m => RecMutex -> m ()
- data RecMutexInitMethodInfo
- recMutexInit :: MonadIO m => RecMutex -> m ()
- data RecMutexLockMethodInfo
- recMutexLock :: MonadIO m => RecMutex -> m ()
- data RecMutexTrylockMethodInfo
- recMutexTrylock :: MonadIO m => RecMutex -> m Bool
- data RecMutexUnlockMethodInfo
- recMutexUnlock :: MonadIO m => RecMutex -> m ()
Exported types
WrappedPtr RecMutex | |
(~) AttrOpTag tag AttrSet => Constructible RecMutex tag | |
((~) * signature (m ()), MonadIO m) => MethodInfo * RecMutexUnlockMethodInfo RecMutex signature | |
((~) * signature (m Bool), MonadIO m) => MethodInfo * RecMutexTrylockMethodInfo RecMutex signature | |
((~) * signature (m ()), MonadIO m) => MethodInfo * RecMutexLockMethodInfo RecMutex signature | |
((~) * signature (m ()), MonadIO m) => MethodInfo * RecMutexInitMethodInfo RecMutex signature | |
((~) * signature (m ()), MonadIO m) => MethodInfo * RecMutexClearMethodInfo RecMutex signature | |
((~) * info (ResolveRecMutexMethod t RecMutex), MethodInfo * info RecMutex p) => IsLabelProxy t (RecMutex -> p) | |
type AttributeList RecMutex |
newZeroRecMutex :: MonadIO m => m RecMutex Source
Construct a RecMutex
struct initialized to zero.
Methods
recMutexClear
data RecMutexClearMethodInfo Source
((~) * signature (m ()), MonadIO m) => MethodInfo * RecMutexClearMethodInfo RecMutex signature |
recMutexClear :: MonadIO m => RecMutex -> m () Source
recMutexInit
data RecMutexInitMethodInfo Source
((~) * signature (m ()), MonadIO m) => MethodInfo * RecMutexInitMethodInfo RecMutex signature |
recMutexInit :: MonadIO m => RecMutex -> m () Source
recMutexLock
data RecMutexLockMethodInfo Source
((~) * signature (m ()), MonadIO m) => MethodInfo * RecMutexLockMethodInfo RecMutex signature |
recMutexLock :: MonadIO m => RecMutex -> m () Source
recMutexTrylock
data RecMutexTrylockMethodInfo Source
((~) * signature (m Bool), MonadIO m) => MethodInfo * RecMutexTrylockMethodInfo RecMutex signature |
recMutexTrylock :: MonadIO m => RecMutex -> m Bool Source
recMutexUnlock
data RecMutexUnlockMethodInfo Source
((~) * signature (m ()), MonadIO m) => MethodInfo * RecMutexUnlockMethodInfo RecMutex signature |
recMutexUnlock :: MonadIO m => RecMutex -> m () Source