是否有可移植的方式静态初始化递归互斥锁?

时间:2012-12-07 07:57:43

标签: pthreads posix mutex recursive-mutex

根据POSIX,我可以通过这种方式静态初始化互斥:

pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER;

但是,如果我希望互斥锁是递归的呢?默认情况下互斥锁是非递归的,并且无法为静态初始化提供互斥锁属性。

2 个答案:

答案 0 :(得分:0)

尝试:

pthread_mutex_t mutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP; 

答案 1 :(得分:0)

似乎没有可移植的方法来做到这一点。解决方法可能是在首次使用互斥锁时动态初始化互斥锁。为了在初始化时防止竞争条件,可以使用另一个非递归的静态初始化互斥锁。