GLib.RecMutex¶
Details¶
- 
class GLib.RecMutex¶
- The - GLib.RecMutexstruct is an opaque data structure to represent a recursive mutex. It is similar to a- GLib.Mutexwith the difference that it is possible to lock a- GLib.RecMutexmultiple 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 - GLib.RecMutexis allocated in static storage then it can be used without initialisation. Otherwise, you should call- GLib.RecMutex.init() on it and- GLib.RecMutex.clear() when done.- A - GLib.RecMutexshould only be accessed with the g_rec_mutex_ functions.- New in version 2.32. - 
clear()[source]¶
- Frees the resources allocated to a recursive mutex with - GLib.RecMutex.init().- This function should not be used with a - GLib.RecMutexthat has been statically allocated.- Calling - GLib.RecMutex.clear() on a locked recursive mutex leads to undefined behaviour.- Sine: 2.32 
 - 
init()[source]¶
- Initializes a - GLib.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 - GLib.RecMutex.init() on an already initialized- GLib.RecMutexleads to undefined behaviour.- To undo the effect of - GLib.RecMutex.init() when a recursive mutex is no longer needed, use- GLib.RecMutex.clear().- New in version 2.32. 
 - 
lock()[source]¶
- Locks self. If self is already locked by another thread, the current thread will block until self is unlocked by the other thread. If self is already locked by the current thread, the ‘lock count’ of self is increased. The mutex will only become available again when it is unlocked as many times as it has been locked. - New in version 2.32. 
 - 
trylock()[source]¶
- Returns: - Trueif self could be locked- Return type: - bool- Tries to lock self. If self is already locked by another thread, it immediately returns - False. Otherwise it locks self and returns- True.- New in version 2.32. 
 - 
unlock()[source]¶
- Unlocks self. If another thread is blocked in a - GLib.RecMutex.lock() call for self, it will become unblocked and can lock self itself.- Calling - GLib.RecMutex.unlock() on a recursive mutex that is not locked by the current thread leads to undefined behaviour.- New in version 2.32. 
 
-