pthread_t用于声明线程ID
pthread_mutex_t 互斥锁
pthread_cond_t
PTHREAD_MUTEX_INITIALIZER静态初始化互斥锁
PTHREAD_COND_INITIALIZER静态初始化变量
pthread_mutex_lock
头文件
#include <pthread.h>
编辑本段函数原型
int pthread_mutex_lock(pthread_mutex_t *mutex);
编辑本段返回值
在成功完成之后会返回零。其他任何返回值都表示出现了错误。如果出现以下任一情况,该函数将失败并返回对应的值。
编辑本段描述
当
pthread_mutex_lock()返回时,该
互斥锁已被锁定。
线程调用该函数让
互斥锁上锁,如果该
互斥锁已被另一个
线程锁定和拥有,则调用该线程将阻塞,直到该互斥锁变为可用为止。 对于 Solaris
线程,请参见mutex_lock 语法。
如果
互斥锁类型为 PTHREAD_MUTEX_ERRORCHECK,则会提供错误检查。如果某个线程尝试重新锁定的
互斥锁已经由该线程锁定,则将返回错误。如果某个线程尝试解除锁定的
互斥锁不是由该线程锁定或者未锁定,则将返回错误。
如果
互斥锁类型为 PTHREAD_MUTEX_RECURSIVE,则该互斥锁会保留锁定计数这一概念。线程首次成功获取
互斥锁时,锁定计数会设置为 1。线程每重新锁定该
互斥锁一次,锁定计数就增加 1。线程每解除锁定该
互斥锁一次,锁定计数就减小 1。 锁定计数达到 0 时,该
互斥锁即可供其他线程获取。如果某个线程尝试解除锁定的互斥锁不是由该线程锁定或者未锁定,则将返回错误。
如果
互斥锁类型是 PTHREAD_MUTEX_DEFAULT,则尝试以
递归方式锁定该互斥锁将产生不确定的行为。对于不是由调用线程锁定的
互斥锁,如果尝试解除对它的锁定,则会产生不确定的行为。如果尝试解除锁定尚未锁定的
互斥锁,则会产生不确定的行为。