RecMutex#
Added in version 2.32.
- class RecMutex(*args, **kwargs)#
The GRecMutex struct is an opaque data structure to represent a
recursive mutex. It is similar to a Mutex 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 RecMutex is allocated in static storage then it can be used
without initialisation. Otherwise, you should call
init() on it and clear() when done.
A GRecMutex should only be accessed with the
g_rec_mutex_ functions.
Methods#
- class RecMutex
- clear() None#
Frees the resources allocated to a recursive mutex with
init().This function should not be used with a
RecMutexthat has been statically allocated.Calling
clear()on a locked recursive mutex leads to undefined behaviour.Added in version 2.32.
- init() None#
Initializes a
RecMutexso that it can be used.This function is useful to initialize a recursive mutex that has been allocated on the stack, or as part of a larger structure.
It is not necessary to initialise a recursive mutex that has been statically allocated.
typedef struct { GRecMutex m; ... } Blob; Blob *b; b = g_new (Blob, 1); g_rec_mutex_init (&b->m);
Calling
init()on an already initializedRecMutexleads to undefined behaviour.To undo the effect of
init()when a recursive mutex is no longer needed, useclear().Added in version 2.32.
- lock() None#
Locks
rec_mutex. Ifrec_mutexis already locked by another thread, the current thread will block untilrec_mutexis unlocked by the other thread. Ifrec_mutexis already locked by the current thread, the ‘lock count’ ofrec_mutexis increased. The mutex will only become available again when it is unlocked as many times as it has been locked.Added in version 2.32.