pthread_mutex_lock

pthread_mutex_lock

當pthread_mutex_lock()返回時,該互斥鎖已被鎖定。執行緒調用該函式讓互斥鎖上鎖,如果該互斥鎖已被另一個執行緒鎖定和擁有,則調用該執行緒將阻塞,直到該互斥鎖變為可用為止。 對於 Solaris執行緒,請參見mutex_lock 語法。

基本介紹

  • 中文名:pthread_mutex_lock
  • 頭檔案:#include <pthread.h>
  • 返回值:在成功完成之後會返回零
  • Solaris執行緒:請參見mutex_lock 語法
  • 互斥鎖類型:PTHREAD_MUTEX_NORMAL
頭檔案,函式原型,返回值,描述,

頭檔案

#include <pthread.h>

函式原型

int pthread_mutex_lock(pthread_mutex_t *mutex);

返回值

在成功完成之後會返回零。其他任何返回值都表示出現了錯誤。如果出現以下任一情況,該函式將失敗並返回對應的值。
返回值種類,引用自說明文檔:
EINVAL
The value specified by mutex does not refer to an initialized mutex object.
EAGAIN
The mutex could not be acquired because the maximum number of recursive locks for mutex has been exceeded.
The pthread_mutex_lock() function may fail if:
EDEADLK
The current thread already owns the mutex.

描述

如果互斥鎖類型為 PTHREAD_MUTEX_NORMAL,則不提供死鎖檢測。嘗試重新鎖定互斥鎖會導致死鎖。如果某個執行緒嘗試解除鎖定的互斥鎖不是由該執行緒鎖定或未鎖定,則將產生不確定的行為。
如果互斥鎖類型為 PTHREAD_MUTEX_ERRORCHECK,則會提供錯誤檢查。如果某個執行緒嘗試重新鎖定的互斥鎖已經由該執行緒鎖定,則將返回錯誤。如果某個執行緒嘗試解除鎖定的互斥鎖不是由該執行緒鎖定或者未鎖定,則將返回錯誤。
如果互斥鎖類型為 PTHREAD_MUTEX_RECURSIVE,則該互斥鎖會保留鎖定計數這一概念。執行緒首次成功獲取互斥鎖時,鎖定計數會設定為 1。執行緒每重新鎖定該互斥鎖一次,鎖定計數就增加 1。執行緒每解除鎖定該互斥鎖一次,鎖定計數就減小 1。 鎖定計數達到 0 時,該互斥鎖即可供其他執行緒獲取。如果某個執行緒嘗試解除鎖定的互斥鎖不是由該執行緒鎖定或者未鎖定,則將返回錯誤。
如果互斥鎖類型是 PTHREAD_MUTEX_DEFAULT,則嘗試以遞歸方式鎖定該互斥鎖將產生不確定的行為。對於不是由調用執行緒鎖定的互斥鎖,如果嘗試解除對它的鎖定,則會產生不確定的行為。如果嘗試解除鎖定尚未鎖定的互斥鎖,則會產生不確定的行為。

相關詞條

熱門詞條

聯絡我們