结构
GLibRecMutex
自:2.32
描述 [src]
struct GRecMutex {
/* No available fields */
}
GRecMutex 结构是一个不透明数据结构,用于表示递归互斥锁。它类似于 GMutex
,不同之处在于可以在同一个线程中多次锁定 GRecMutex,而不会发生死锁。执行此操作时,必须小心地尽最大可能解锁递归互斥锁。
如果在静态存储中分配了 GRecMutex
,则可以使用此存储而不进行初始化。否则,应在 GRecMutex
上调用 g_rec_mutex_init()
,并在 done
时调用 g_rec_mutex_clear()
。
GRecMutex 仅应通过 g_rec_mutex_ 函数进行访问。
自 2.32 起提供
实例方法
g_rec_mutex_lock
锁定 rec_mutex
。如果另一个线程已经锁定了 rec_mutex
,当前线程将阻塞,直到另一个线程解锁 rec_mutex
。如果当前线程已锁定 rec_mutex
,则增加 rec_mutex
的“锁计数”。只有当互斥锁被解锁的次数与被锁定的次数一样多时,互斥锁才会再次变为可用状态。
自:2.32
g_rec_mutex_trylock
尝试锁定 rec_mutex
。如果另一个线程已经锁定了 rec_mutex
,它会立即返回 FALSE
。否则,它会锁定 rec_mutex
并返回 TRUE
。
自:2.32
g_rec_mutex_unlock
解锁 rec_mutex
。如果另一个线程在 g_rec_mutex_lock()
调用中针对 rec_mutex
而被阻塞,则它将解除阻塞并且可以自行锁定 rec_mutex
。
自:2.32