簡介
非阻塞的鎖定互斥鎖pthread_mutex_trylock
頭檔案
#include <pthread.h>
函式體
int pthread_mutex_trylock( pthread_mutex_t *mutex );
返回值
函式成功返回0。任何其他返回值都表示錯誤。
函式pthread_mutex_trylock是pthread_mutex_lock的非阻塞版本。如果mutex參數所指定的互斥鎖已經被鎖定的話,調用pthread_mutex_trylock函式不會阻塞當前執行緒,而是立即返回一個值來描述互斥鎖的狀況。
else
{//printf("fun111 mut1 %d pth :: %u\n", (int)str, s);
pthread_mutex_unlock(μt1);
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
需要注意的是,只有確保在pthread_mutex_trylock()調用成功時,即返回值為0時,才能去解鎖它。