pthread_mutex_trylock
非阻塞的锁定互斥锁pthread_mutex_trylock
头文件
#include <pthread.h>
函数体
int pthread_mutex_trylock( pthread_mutex_t *mutex );
返回值
函数成功返回0。任何其他返回值都表示错误。
函数是pthread_mutex_lock函数的非阻塞版本。如果mutex参数所指定的互斥锁已经被锁定
的话,调用pthread_mutex_trylock函数不会阻塞当前线程,而是立即返回一个值来描述互
斥锁的状况。
else
{//printf("fun111 mut1 %d pth :: %u\n", (int)str, s);
pthread_mutex_unlock(&mut1);
usleep(1000);
}
pthread_mutex_trylock()调用在参数mutex指定的mutex对象当前被锁住的时候立即返回,除此之外,pthread_mutex_trylock()跟pthread_mutex_lock()功能完全一样。
pthread_mutex_trylock() 在成功获得了一个mutex的锁后返回0,否则返回一个错误提示码错误.
pthread_mutex_trylock() 函数在一下情况会失败:
[EBUSY] The mutex could not be acquired because it was already locked. mutex已经被锁住的时候无法再获取锁
The pthread_mutex_lock(), pthread_mutex_trylock() and pthread_mutex_unlock() functions may fail if:
[EINVAL] mutex指向的mutex未被初始化
[EAGAIN] Mutex的lock count(锁数量)已经超过 递归索的最大值,无法再获得该mutex