Basics
Guides
API Reference
Basics
Guides
API Reference
[23:7] extends: object
A #GStaticRecMutex works like a #GStaticMutex, but it can be locked multiple times by one thread. If you enter it n times, you have to unlock it n times again to let other threads lock it. An exception is the function g_static_rec_mutex_unlock_full(): that allows you to unlock a #GStaticRecMutex completely returning the depth, (i.e. the number of times this mutex was locked). The depth can later be used to restore the state of the #GStaticRecMutex by calling g_static_rec_mutex_lock_full(). In GLib 2.32, #GStaticRecMutex has been deprecated in favor of #GRecMutex. Even though #GStaticRecMutex is not opaque, it should only be used with the following functions. All of the g_static_rec_mutex_* functions can be used even if g_thread_init() has not been called. Then they do nothing, apart from g_static_rec_mutex_trylock(), which does nothing but returning %TRUE.
GStaticRecMutex (Handle = null)
Creates a new
StaticRecMutexby wrapping a native handle or another wrapper.
Handle is the native handle or another wrapper whose handle to adopt.toNativeHandle (Source)
Normalizes a constructor argument into a raw pointer carrier. Accepts a raw NativeHandle, a raw NativeBuffer returned from
fn.call(...), another generated wrapper exposinghandle(), or null. Returns null when the argument carries no pointer.
Source is the raw handle, raw buffer, wrapper, or null.A raw pointer carrier or null when no pointer is present.getLib ()
Returns the opened native library for this generated wrapper.
The opened native library.handle ()
Returns the wrapped NativeHandle.
The wrapped NativeHandle.isNull ()
Returns true when the wrapped handle is null.
A bool.describe ()
Returns a small string for debugging generated wrappers.
A string.free ()
Releases all resources allocated to a #GStaticRecMutex. You don't have to call this functions for a #GStaticRecMutex with an unbounded lifetime, i.e. objects declared 'static', but if you have a #GStaticRecMutex as a member of a structure and the structure is freed, you should also free the #GStaticRecMutex.
None.init ()
A #GStaticRecMutex must be initialized with this function before it can be used. Alternatively you can initialize it with %G_STATIC_REC_MUTEX_INIT.
None.lock ()
Locks @mutex. If @mutex is already locked by another thread, the current thread will block until @mutex is unlocked by the other thread. If @mutex is already locked by the calling thread, this functions increases the depth of @mutex and returns immediately.
None.lock_full (int depth)
Works like calling g_static_rec_mutex_lock() for @mutex @depth times.
depth is number of times this mutex has to be unlocked to be completely unlocked..None.trylock ()
Tries to lock @mutex. If @mutex is already locked by another thread, it immediately returns %FALSE. Otherwise it locks @mutex and returns %TRUE. If @mutex is already locked by the calling thread, this functions increases the depth of @mutex and immediately returns %TRUE.
%TRUE, if @mutex could be locked..unlock ()
Unlocks @mutex. Another thread will be allowed to lock @mutex only when it has been unlocked as many times as it had been locked before. If
is completely unlocked and another thread is blocked in a g_static_rec_mutex_lock() call for @mutex, it will be woken and can lockitself.None.unlock_full ()
Completely unlocks @mutex. If another thread is blocked in a g_static_rec_mutex_lock() call for @mutex, it will be woken and can lock
itself. This function returns the number of times that @mutex has been locked by the current thread. To restore the state before the call to g_static_rec_mutex_unlock_full() you can call g_static_rec_mutex_lock_full() with the depth returned by this function.number of times @mutex has been locked by the current thread..
Aussom
Write once. Embed everywhere.
Copyright 2026 Austin Lehman. All rights reserved.