pthread_mutex_trylock

pthread_mutex_trylock是一個計算機函式,非阻塞的鎖定互斥鎖。

簡介

非阻塞的鎖定互斥鎖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時,才能去解鎖它。

相關詞條

熱門詞條

聯絡我們