多线程编程指南

解除锁定互斥锁

使用 pthread_mutex_unlock(3C) 可以解除锁定 mutex 所指向的互斥锁。 对于 Solaris 线程,请参见mutex_unlock 语法

pthread_mutex_unlock 语法

int	pthread_mutex_unlock(pthread_mutex_t *mutex); 
#include <pthread.h>



pthread_mutex_t mutex;

int ret;



ret = pthread_mutex_unlock(&mutex); /* release the mutex */

pthread_mutex_unlock() 可释放 mutex 引用的互斥锁对象。互斥锁的释放方式取决于互斥锁的类型属性。 如果调用 pthread_mutex_unlock() 时有多个线程被 mutex 对象阻塞,则互斥锁变为可用时调度策略可确定获取该互斥锁的线程。 对于 PTHREAD_MUTEX_RECURSIVE 类型的互斥锁,当计数达到零并且调用线程不再对该互斥锁进行任何锁定时,该互斥锁将变为可用。

pthread_mutex_unlock 返回值

pthread_mutex_unlock() 在成功完成之后会返回零。其他任何返回值都表示出现了错误。如果出现以下情况,该函数将失败并返回对应的值。


EPERM

描述:

当前线程不拥有互斥锁。