int pthread_mutex_destroy (pthread_mutex_t * mutex)
在Linux中,互斥锁不占用任何资源,因此该函数只检查锁状态,若为锁定则返回EBUSY。
对pthread_mutexattr_t的维护
int pthread_mutexattr_init (pthread_mutexattr_t * attr);
int pthread_mutexattr_destroy (pthread_mutexattr_t * attr);
int pthread_mutexattr_getpshared (const pthread_mutexattr_t * attr, int * pshared);
int pthread_mutexattr_setpshared (pthread_mutexattr_t * attr, int pshared);
int pthread_mutexattr_settype (pthread_mutexattr_t * attr, int kind);
int pthread_mutexattr_gettype (pthread_mutexattr_t * attr, int * kind);
锁操作
不论哪种类型的锁,都不可能被两个不同的线程同时得到,而必须等待解锁。
关于解锁者:
对于普通锁和适应锁类型,解锁者可以是同进程内任何线程
对于嵌套锁,文档和实现要求必须由加锁者解锁,但实验结果表明并没有这种限制
检错锁必须由加锁者解锁才有效,否则返回EPERM -
int pthread_mutex_lock (pthread_mutex_t * mutex);
int pthread_mutex_unlock (pthread_mutex_t * mutex);
int pthread_mutex_trylock (pthread_mutex_t * mutex);//在锁已经被占据时返回EBUSY而不是挂起等待