Basics

Guides

API Reference

Menu

Basics

Guides

API Reference

class: GStaticRecMutex

[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.

Members

  • handleObj
  • lib
  • retainedCallbacks
  • signalHandlerNames
  • signalSetterHandlers

Methods

  • GStaticRecMutex (Handle = null)

    Creates a new StaticRecMutex by wrapping a native handle or another wrapper.

    • @p 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 exposing handle(), or null. Returns null when the argument carries no pointer.

    • @p Source is the raw handle, raw buffer, wrapper, or null.
    • @r A raw pointer carrier or null when no pointer is present.
  • getLib ()

    Returns the opened native library for this generated wrapper.

    • @r The opened native library.
  • handle ()

    Returns the wrapped NativeHandle.

    • @r The wrapped NativeHandle.
  • isNull ()

    Returns true when the wrapped handle is null.

    • @r A bool.
  • describe ()

    Returns a small string for debugging generated wrappers.

    • @r 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.

    • @r 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.

    • @r 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.

    • @r None.
  • lock_full (int depth)

    Works like calling g_static_rec_mutex_lock() for @mutex @depth times.

    • @p depth is number of times this mutex has to be unlocked to be completely unlocked..
    • @r 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.

    • @r %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

    • @mutex is completely unlocked and another thread is blocked in a g_static_rec_mutex_lock() call for @mutex, it will be woken and can lock
    • @mutex itself.
    • @r 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

    • @mutex 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.
    • @r number of times @mutex has been locked by the current thread..