Struct
GLibStaticRecMutex
Description [src]
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
.
Instance methods
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
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
g_static_rec_mutex_lock_full
Works like calling g_static_rec_mutex_lock()
for mutex
depth
times.
deprecated: 2.32
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
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
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