结构

GLibStaticRecMutex

说明 [src]

struct GStaticRecMutex {
  /* No available fields */
}

GStaticRecMutex 的工作原理类似于 GStaticMutex,但它能被同一线程多次锁定。如果你进入它 n 次,则必须再次解锁它 n 次才能让其他线程锁定它。例外是函数 g_static_rec_mutex_unlock_full():它允许你完全解锁一个 GStaticRecMutex,返回深度(即此互斥锁被锁定的次数)。深度稍后可用于通过调用 g_static_rec_mutex_lock_full() 恢复 GStaticRecMutex 的状态。在 GLib 2.32 中,GStaticRecMutex 已弃用,建议改用 GRecMutex

即使 GStaticRecMutex 不是不透明的,也应仅将其与以下函数一起使用。

即使尚未调用 g_thread_init(),也可以使用所有 g_static_rec_mutex_* 函数。此时它们没有任何作用,除了 g_static_rec_mutex_trylock() 只会返回 TRUE

实例方法

g_static_rec_mutex_free

释放分配给 GStaticRecMutex 的所有资源。

已弃用:2.32 

g_static_rec_mutex_init

在使用 GStaticRecMutex 之前,必须使用此函数对其进行初始化。或者,你可以使用 G_STATIC_REC_MUTEX_INIT 进行初始化。

已弃用:2.32 

g_static_rec_mutex_lock

锁定 mutex。如果 mutex 已被其他线程锁定,当前线程将阻塞,直至 mutex 被其他线程解锁。如果 mutex 已被调用线程锁定,此函数将增加 mutex 的深度并立即返回。

已弃用:2.32 

g_static_rec_mutex_lock_full

类似于对 mutex 调用 g_static_rec_mutex_lock() depth 次。

已弃用:2.32 

g_static_rec_mutex_trylock

尝试锁定 mutex。如果 mutex 已被其他线程锁定,它将立即返回 FALSE。否则它将锁定 mutex 并返回 TRUE。如果 mutex 已被调用线程锁定,此函数将增加 mutex 的深度并立即返回 TRUE

已弃用:2.32 

g_static_rec_mutex_unlock

解锁 mutex。其他线程只有在 mutex 被解锁的次数已达先前被锁定的次数后才能锁定 mutex。如果 mutex 已完全解锁,并且另一个线程在针对 mutexg_static_rec_mutex_lock() 调用中被阻塞,则该线程将被唤醒并可以自身锁定 mutex

已弃用:2.32 

g_static_rec_mutex_unlock_full

完全解锁 mutex。如果另一个线程在 mutexg_static_rec_mutex_lock() 调用中被阻止,将唤醒它,并且它可以锁定 mutex 本身。此函数返回当前线程已锁定 mutex 的次数。若要恢复调用 g_static_rec_mutex_unlock_full() 之前的状态,可以使用此函数返回的深度调用 g_static_rec_mutex_lock_full()

已弃用:2.32