23,217
社区成员




#include <pthread.h>
int main()
{
pthread_mutex_t m = PTHREAD_RECURSIVE_MUTEX_INITIALIZER;
/* 失败,报告 PTHREAD_RECURSIVE_MUTEX_INITIALIZER 是未定义符号 */
/* 尝试 PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP,仍是未定义符号 */
}
#include <pthread.h>
int main()
{
pthread_mutex_t m;
pthread_mutexattr_t ma;
pthread_mutexattr_init(&ma);
pthread_mutexattr_settype(&ma, PTHREAD_MUTEX_RECURSIVE_NP); /* NP或非NP都尝试过 */
pthread_mutex_init(&m, &ma);
pthread_mutexattr_destroy(&ma);
/* 其他操作 */
}
#ifdef __USE_UNIX98
/* Return in *KIND the mutex kind attribute in *ATTR. */
extern int pthread_mutexattr_gettype (__const pthread_mutexattr_t *__restrict
__attr, int *__restrict __kind) __THROW;
/* Set the mutex kind attribute in *ATTR to KIND (either PTHREAD_MUTEX_NORMAL,
PTHREAD_MUTEX_RECURSIVE, PTHREAD_MUTEX_ERRORCHECK, or
PTHREAD_MUTEX_DEFAULT). */
extern int pthread_mutexattr_settype (pthread_mutexattr_t *__attr, int __kind)
__THROW;
/* Return in *PROTOCOL the mutex protocol attribute in *ATTR. */
extern int pthread_mutexattr_getprotocol (__const pthread_mutexattr_t *
__restrict __attr,
int *__restrict __protocol) __THROW;
/* Set the mutex protocol attribute in *ATTR to PROTOCOL (either
PTHREAD_PRIO_NONE, PTHREAD_PRIO_INHERIT, or PTHREAD_PRIO_PROTECT). */
extern int pthread_mutexattr_setprotocol (pthread_mutexattr_t *__attr,
int __protocol) __THROW;
/* Return in *PRIOCEILING the mutex prioceiling attribute in *ATTR. */
extern int pthread_mutexattr_getprioceiling (__const pthread_mutexattr_t *
__restrict __attr,
int *__restrict __prioceiling)
__THROW;
/* Set the mutex prioceiling attribute in *ATTR to PRIOCEILING. */
extern int pthread_mutexattr_setprioceiling (pthread_mutexattr_t *__attr,
int __prioceiling) __THROW;
#endif
#define __USE_UNIX98
#include <pthread.h>
int main()
{
/* 这部分不变 */
}