### Struct

# GLib StaticRecMutex

since: 2.0

#### Description

    struct GStaticRecMutex {
      /* No available fields */
    }

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

Available since: 2.0

#### Instance methods

###### g_static_rec_mutex_free

Releases all resources allocated to a `GStaticRecMutex`.

deprecated: 2.32 since: 2.0

###### g_static_rec_mutex_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`.

deprecated: 2.32 since: 2.0

###### g_static_rec_mutex_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.

deprecated: 2.32 since: 2.0

###### g_static_rec_mutex_lock_full

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

deprecated: 2.32 since: 2.0

###### g_static_rec_mutex_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`.

deprecated: 2.32 since: 2.0

###### g_static_rec_mutex_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.

deprecated: 2.32 since: 2.0

###### g_static_rec_mutex_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.

deprecated: 2.32 since: 2.0