根据POSIX,我可以通过这种方式静态初始化互斥:
pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER;
但是,如果我希望互斥锁是递归的呢?默认情况下互斥锁是非递归的,并且无法为静态初始化提供互斥锁属性。
答案 0 :(得分:0)
尝试:
pthread_mutex_t mutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
答案 1 :(得分:0)
似乎没有可移植的方法来做到这一点。解决方法可能是在首次使用互斥锁时动态初始化互斥锁。为了在初始化时防止竞争条件,可以使用另一个非递归的静态初始化互斥锁。