Мне интересно, способна ли в Университете штата Флорида реализация стандарта 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, или есть другой способ добиться этого (то есть другой способ объявить мьютекс рекурсивным)?