在使用使用此mutexattr初始化的互斥锁之前,我可以销毁一个mutexattr对象吗?

时间:2017-06-04 06:52:29

标签: c attributes pthreads posix mutex

请考虑以下代码:

pthread_mutexattr_t attr;
pthread_mutexattr_init(&attr);
pthread_mutexattr_setrobust(&attr, PTHREAD_MUTEX_ROBUST);

pthread_mutex_t mut;
pthread_mutex_init(&mut, &attr);

pthread_mutexattr_destroy(&attr);

pthread_mutex_lock(&mut);

这段代码有效吗?

如果允许互斥锁包含对其初始化的属性对象的引用,那么我想在使用互斥锁之前我可能不会调用pthread_mutexattr_destroy(&attr)

1 个答案:

答案 0 :(得分:6)

就像manual说:

  

在使用互斥锁属性对象初始化一个或多个互斥锁之后,任何影响属性对象的函数(包括破坏)都不会影响任何先前初始化的互斥锁。

所以你的代码是有效的(但不要忘记检查这些函数的潜在错误)。