我想知道佛罗里达州立大学的 pthread 标准实现是否能够处理递归互斥锁。不幸的是,关于 FSU 实现的文档相当差,并且没有提到将互斥体声明为递归的可能性或不声明。
尝试如下声明互斥锁:
pthread_mutex_attr mutex_attr;
pthread_mutexattr_init (&mutex_attr);
pthread_mutexattr_settype(&mutex_attr, PTHREAD_MUTEX_RECURSIVE);
pthread_mutex_init(&mutex, NULL);
并使用 FSU pthreads 库进行编译,我得到了以下错误列表:
test.c:25: error: `pthread_mutex_attr' undeclared (first use in this function)
test.c:25: error: (Each undeclared identifier is reported only once
test.c:25: error: for each function it appears in.)
test.c:25: error: parse error before "mutex_attr"
test.c:27: error: `mutex_attr' undeclared (first use in this function)
test.c:28: error: `PTHREAD_MUTEX_RECURSIVE' undeclared (first use in this function)
尝试在我的机器上使用(非 FSU)pthread 实现编译相同的代码,它可以工作。
为了避免琐碎,我提前告诉您,默认情况下,POSIX 互斥锁不是递归的。
我是否应该得出结论,没有办法在 FSU 实现中使用递归互斥锁,还是有另一种方法来实现这些(即另一种将互斥锁声明为递归的方法)?