### Struct

# GLib RecMutex

since: 2.32

#### Description

    struct GRecMutex {
      /* No available fields */
    }

The GRecMutex struct is an opaque data structure to represent a recursive mutex. It is similar to a `GMutex` 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 `GRecMutex` is allocated in static storage then it can be used without initialisation. Otherwise, you should call `g_rec_mutex_init()` on it and `g_rec_mutex_clear()` when done.

A GRecMutex should only be accessed with the g_rec_mutex_ functions.

Available since: 2.32

#### Instance methods

###### g_rec_mutex_clear

Frees the resources allocated to a recursive mutex with g_rec_mutex_init().

since: 2.32

###### g_rec_mutex_init

Initializes a `GRecMutex` so that it can be used.

since: 2.32

###### g_rec_mutex_lock

Locks `rec_mutex`. If `rec_mutex` is already locked by another thread, the current thread will block until `rec_mutex` is unlocked by the other thread. If `rec_mutex` is already locked by the current thread, the ‘lock count’ of `rec_mutex` is increased. The mutex will only become available again when it is unlocked as many times as it has been locked.

since: 2.32

###### g_rec_mutex_trylock

Tries to lock `rec_mutex`. If `rec_mutex` is already locked by another thread, it immediately returns `FALSE`. Otherwise it locks `rec_mutex` and returns `TRUE`.

since: 2.32

###### g_rec_mutex_unlock

Unlocks `rec_mutex`. If another thread is blocked in a `g_rec_mutex_lock()` call for `rec_mutex`, it will become unblocked and can lock `rec_mutex` itself.

since: 2.32