0

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

pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER;

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

4

2 回答 2

0

尝试 :

pthread_mutex_t mutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP; 
于 2012-12-07T09:04:55.133 回答
0

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

于 2012-12-09T20:51:08.587 回答