pthread_mutex_destroy()用于注销一个互斥锁。销毁一个互斥锁即意味着释放它所占用的资源,且要求锁当前处于开放状态。
#include <stdlib.h>
#include <pthread.h>
int main(void)
{
pthread_mutex_t mutex;
pthread_t tid2;
pthread_mutex_init(&mutex,NULL);
pthread_mutex_destroy(&mutex);
if(pthread_mutex_lock(&mutex)!=0)perror();
return 0;
}
看看这段代码,为什么destroy之后调用lock不出错呢?
#include <pthread.h>
int main(void)
{
pthread_mutex_t mutex;
pthread_t tid2;
pthread_mutex_init(&mutex,NULL);
pthread_mutex_destroy(&mutex);
if(pthread_mutex_lock(&mutex)!=0)perror();
return 0;
}
看看这段代码,为什么destroy之后调用lock不出错呢?
pthread_mutex_destroy()用于注销一个互斥锁,API定义如下: int pthread_mutex_destroy(pthread_mutex_t *mutex) 销毁一个互斥锁即意味着释放它所占用的资源,且要求锁当前处于开放状态。由于在Linux中,互斥锁并不占用任何资源,因此LinuxThreads中的pthread_mutex_destroy()除了检查锁状态以外(锁定状态则返回EBUSY)没有其他动作。
所以上述程序不会出错
所以上述程序不会出错
转载于:https://blog.51cto.com/xmulqy/120198