int pthread

int pthread

int pthread,一種函式,套用於編程。

基本介紹

  • 中文名:int pthread
  • 外文名:int pthread
  • 定位:函式
  • 套用:編程
基本概述,互斥鎖屬性,初始化互斥鎖屬性對象,銷毀互斥鎖屬性對象,設定互斥鎖的範圍,獲取互斥鎖的範圍,設定互斥鎖類型的屬性,獲取互斥鎖的類型屬性,設定互斥鎖屬性的協定,獲取互斥鎖屬性的協定,設定互斥鎖屬性的優先權上限,獲取互斥鎖屬性的優先權上限,設定互斥鎖的優先權上限,獲取互斥鎖的優先權上限,設定互斥鎖的強健屬性,獲取互斥鎖的強健屬性,

基本概述

該函式用於C函式的多執行緒編程中,互斥鎖的初始化。
頭檔案:#include
函式原型:int pthread_mutex_init(pthread_mutex_t *restrict mutex,const pthread_mutexattr_t *restrict attr);
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
pthread_mutex_init()函式是以動態方式創建互斥鎖的,參數attr指定了新建互斥鎖的屬性。如果參數attr為空,則使用默認的互斥鎖屬性,默認屬性為快速互斥鎖 。互斥鎖的屬性在創建鎖的時候指定,在LinuxThreads實現中僅有一個鎖類型屬性,不同的鎖類型在試圖對一個已經被鎖定的互斥鎖加鎖時表現不同。
pthread_mutexattr_init()函式成功完成之後會返回零,其他任何返回值都表示出現了錯誤。
函式成功執行後,互斥鎖被初始化為未鎖住態。

互斥鎖屬性

使用互斥鎖(互斥)可以使執行緒按順序執行。通常,互斥鎖通過確保一次只有一個執行緒執行代碼的臨界段來同步多個執行緒。互斥鎖還可以保護單執行緒代碼。
要更改預設的互斥鎖屬性,可以對屬性對象進行聲明和初始化。通常,互斥鎖屬性會設定在應用程式開頭的某個位置,以便可以快速查找和輕鬆修改。

初始化互斥鎖屬性對象

使用pthread_mutexattr_init(3C)可以將與互斥鎖對象相關聯的屬性初始化為其預設值。在執行過程中,執行緒系統會為每個屬性對象分配存儲空間。
pthread_mutexattr_init語法
int pthread_mutexattr_init(pthread_mutexattr_t *mattr);
#include
pthread_mutexattr_t mattr;
int ret;/* initialize an attribute to default value */
ret = pthread_mutexattr_init(&mattr);
調用此函式時,pshared 屬性的預設值為 PTHREAD_PROCESS_PRIVATE。 該值表示可以在進程內使用經過初始化的互斥鎖。
mattr 的類型為 opaque,其中包含一個由系統分配的屬性對象。mattr 範圍可能的值為 PTHREAD_PROCESS_PRIVATE 和 PTHREAD_PROCESS_SHARED。PTHREAD_PROCESS_PRIVATE 是預設值。
對於互斥鎖屬性對象,必須首先通過調用 pthread_mutexattr_destroy(3C) 將其銷毀,才能重新初始化該對象。pthread_mutexattr_init() 調用會導致分配類型為 opaque 的對象。如果未銷毀該對象,則會導致記憶體泄漏。
pthread_mutexattr_init 返回值
pthread_mutexattr_init() 成功完成之後會返回零。其他任何返回值都表示出現了錯誤。如果出現以下情況,該函式將失敗並返回對應的值。
ENOMEM 描述:記憶體不足,無法初始化互斥鎖屬性對象。

銷毀互斥鎖屬性對象

pthread_mutexattr_destroy(3C)可用來取消分配用於維護 pthread_mutexattr_init() 所創建的屬性對象的存儲空間。
pthread_mutexattr_destroy 語法
int pthread_mutexattr_destroy(pthread_mutexattr_t *mattr)
#include
pthread_mutexattr_t mattr;
int ret;/* destroy an attribute */
ret = pthread_mutexattr_destroy(&mattr);
pthread_mutexattr_destroy 返回值
pthread_mutexattr_destroy() 成功完成之後會返回零。其他任何返回值都表示出現了錯誤。如果出現以下情況,該函式將失敗並返回對應的值。
EINVAL 描述: 由 mattr 指定的值無效。

設定互斥鎖的範圍

pthread_mutexattr_setpshared(3C)可用來設定互斥鎖變數的作用域。
pthread_mutexattr_setpshared 語法
int pthread_mutexattr_setpshared(pthread_mutexattr_t *mattr, int pshared);
#include
pthread_mutexattr_t mattr;
int ret;
ret = pthread_mutexattr_init(&mattr); /* * resetting to its default value: private */
ret = pthread_mutexattr_setpshared(&mattr, PTHREAD_PROCESS_PRIVATE);
互斥鎖變數可以是進程專用的(進程內)變數,也可以是系統範圍內的(進程間)變數。要在多個進程中的執行緒之間共享互斥鎖,可以在共享記憶體中創建互斥鎖,並將pshared屬性設定為 PTHREAD_PROCESS_SHARED。 此行為與最初的 Solaris 執行緒實現中 mutex_init() 中的 USYNC_PROCESS 標誌等效。
如果互斥鎖的pshared屬性設定為 PTHREAD_PROCESS_PRIVATE,則僅有那些由同一個進程創建的執行緒才能夠處理該互斥鎖。pthread_mutexattr_setpshared 返回值
pthread_mutexattr_setpshared() 成功完成之後會返回零。其他任何返回值都表示出現了錯誤。如果出現以下情況,該函式將失敗並返回對應的值。
EINVAL 描述: 由 mattr 指定的值無效。

獲取互斥鎖的範圍

pthread_mutexattr_getpshared(3C)可用來返回由 pthread_mutexattr_setpshared() 定義的互斥鎖變數的範圍。
pthread_mutexattr_getpshared 語法
int pthread_mutexattr_getpshared(pthread_mutexattr_t *mattr, int *pshared);
#include
pthread_mutexattr_t mattr;
int pshared, ret;/* get pshared of mutex */
ret = pthread_mutexattr_getpshared(&mattr, &pshared);
此函式可為屬性對象 mattr 獲取 pshared 的當前值。該值為 PTHREAD_PROCESS_SHARED 或 PTHREAD_PROCESS_PRIVATE。
pthread_mutexattr_getpshared 返回值
pthread_mutexattr_getpshared() 成功完成之後會返回零。其他任何返回值都表示出現了錯誤。如果出現以下情況,該函式將失敗並返回對應的值。
EINVAL 描述: 由 mattr 指定的值無效。

設定互斥鎖類型的屬性

pthread_mutexattr_settype(3C)可用來設定互斥鎖的type屬性
pthread_mutexattr_settype 語法
#include
int pthread_mutexattr_settype(pthread_mutexattr_t *attr , int type);
類型屬性的預設值為 PTHREAD_MUTEX_DEFAULT。
type參數指定互斥鎖的類型。以下列出了有效的互斥鎖類型:
PTHREAD_MUTEX_NORMAL 描述: 此類型的互斥鎖不會檢測死鎖。如果執行緒在不首先解除互斥鎖的情況下嘗試重新鎖定該互斥鎖,則會產生死鎖。嘗試解除由其他執行緒鎖定的互斥鎖會產生不確定的行為。如果嘗試解除未鎖定的互斥鎖,則會產生不確定的行為。
PTHREAD_MUTEX_ERRORCHECK 描述: 此類型的互斥鎖可提供錯誤檢查。如果執行緒在不首先解除鎖定互斥鎖的情況下嘗試重新鎖定該互斥鎖,則會返回錯誤。如果執行緒嘗試解除鎖定的互斥鎖已經由其他執行緒鎖定,則會返回錯誤。如果執行緒嘗試解除未鎖定的互斥鎖,則會返回錯誤。
PTHREAD_MUTEX_RECURSIVE 描述: 如果執行緒在不首先解除鎖定互斥鎖的情況下嘗試重新鎖定該互斥鎖,則可成功鎖定該互斥鎖。 與 PTHREAD_MUTEX_NORMAL 類型的互斥鎖不同,對此類型互斥鎖進行重新鎖定時不會產生死鎖情況。多次鎖定互斥鎖需要進行相同次數的解除鎖定才可以釋放該鎖,然後其他執行緒才能獲取該互斥鎖。如果執行緒嘗試解除鎖定的互斥鎖已經由其他執行緒鎖定,則會返回錯誤。 如果執行緒嘗試解除未鎖定的互斥鎖,則會返回錯誤。
PTHREAD_MUTEX_DEFAULT 描述: 如果嘗試以遞歸方式鎖定此類型的互斥鎖,則會產生不確定的行為。對於不是由調用執行緒鎖定的此類型互斥鎖,如果嘗試對它解除鎖定,則會產生不確定的行為。對於尚未鎖定的此類型互斥鎖,如果嘗試對它解除鎖定,也會產生不確定的行為。允許在實現中將該互斥鎖映射到其他互斥鎖類型之一。對於 Solaris 執行緒,PTHREAD_PROCESS_DEFAULT 會映射到 PTHREAD_PROCESS_NORMAL。
pthread_mutexattr_settype 返回值
如果運行成功,pthread_mutexattr_settype 函式會返回零。否則,將返回用於指明錯誤的錯誤號。
EINVAL 描述: 值為 type 無效。EINVAL 描述: attr 指定的值無效。

獲取互斥鎖的類型屬性

pthread_mutexattr_gettype(3C)可用來獲取由 pthread_mutexattr_settype() 設定的互斥鎖的type屬性。
pthread_mutexattr_gettype 語法
#include
int pthread_mutexattr_gettype(pthread_mutexattr_t *attr , int *type);
類型屬性的預設值為 PTHREAD_MUTEX_DEFAULT。
type參數指定互斥鎖的類型。有效的互斥鎖類型包括:
PTHREAD_MUTEX_NORMAL PTHREAD_MUTEX_ERRORCHECK PTHREAD_MUTEX_RECURSIVE PTHREAD_MUTEX_DEFAULT 有關每種類型的說明,請參見pthread_mutexattr_settype 語法。
pthread_mutexattr_gettype 返回值
如果成功完成,pthread_mutexattr_gettype() 會返回 0。其他任何返回值都表示出現了錯誤。

設定互斥鎖屬性的協定

pthread_mutexattr_setprotocol(3C)可用來設定互斥鎖屬性對象的協定屬性。
pthread_mutexattr_setprotocol 語法
#include
int pthread_mutexattr_setprotocol(pthread_mutexattr_t *attr, int protocol);
attr 指示以前調用 pthread_mutexattr_init() 時創建的互斥鎖屬性對象。
protocol 可定義套用於互斥鎖屬性對象的協定。
pthread.h 中定義的 protocol 可以是以下值之一:PTHREAD_PRIO_NONE、PTHREAD_PRIO_INHERIT 或 PTHREAD_PRIO_PROTECT。
PTHREAD_PRIO_NONE 執行緒的優先權和調度不會受到互斥鎖擁有權的影響。PTHREAD_PRIO_INHERIT 此協定值(如 thrd1)會影響執行緒的優先權和調度。如果更高優先權的執行緒因 thrd1 所擁有的一個或多個互斥鎖而被阻塞,而這些互斥鎖是用 PTHREAD_PRIO_INHERIT 初始化的,則 thrd1 將以高於它的優先權或者所有正在等待這些互斥鎖(這些互斥鎖是 thrd1 指所擁有的互斥鎖)的執行緒的最高優先權運行。如果 thrd1 因另一個執行緒 (thrd3) 擁有的互斥鎖而被阻塞,則相同的優先權繼承效應會以遞歸方式傳播給 thrd3。使用 PTHREAD_PRIO_INHERIT 可以避免優先權倒置。低優先權的執行緒持有較高優先權執行緒所需的鎖時,便會發生優先權倒置。只有在較低優先權的執行緒釋放該鎖之後,較高優先權的執行緒才能繼續使用該鎖。設定 PTHREAD_PRIO_INHERIT,以便按與預期的優先權相反的優先權處理每個執行緒。如果為使用協定屬性值 PTHREAD_PRIO_INHERIT 初始化的互斥鎖定義了 _POSIX_THREAD_PRIO_INHERIT,則互斥鎖的屬主失敗時會執行以下操作。屬主失敗時的行為取決於 pthread_mutexattr_setrobust_np() 的 robustness 參數的值。解除鎖定互斥鎖。互斥鎖的下一個屬主將獲取該互斥鎖,並返回錯誤 EOWNERDEAD。互斥鎖的下一個屬主會嘗試使該互斥鎖所保護的狀態一致。如果屬主無法使狀態保持一致,請勿調用 pthread_mutex_init(),而是解除鎖定該互斥鎖。在這種情況下,所有等待的執行緒都將被喚醒。以後對 pthread_mutex_lock() 的所有調用將無法獲取互斥鎖,並將返回錯誤代碼 ENOTRECOVERABLE。現在,通過調用 pthread_mutex_destroy() 來取消初始化該互斥鎖,即可使其狀態保持一致。調用 pthread_mutex_init() 可重新初始化互斥鎖。如果已獲取該鎖的執行緒失敗並返回 EOWNERDEAD,則下一個屬主將獲取該鎖及錯誤代碼 EOWNERDEAD。PTHREAD_PRIO_PROTECT 當執行緒擁有一個或多個使用 PTHREAD_PRIO_PROTECT 初始化的互斥鎖時,此協定值會影響其他執行緒(如 thrd2)的優先權和調度。thrd2 以其較高的優先權或者以 thrd2 擁有的所有互斥鎖的最高優先權上限運行。基於被 thrd2 擁有的任一互斥鎖阻塞的較高優先權執行緒對於 thrd2 的調度沒有任何影響。 如果某個執行緒調用 sched_setparam() 來更改初始優先權,則調度程式不會採用新優先權將該執行緒移到調度佇列末尾。
執行緒擁有使用 PTHREAD_PRIO_INHERIT 或 PTHREAD_PRIO_PROTECT 初始化的互斥鎖執行緒解除鎖定使用 PTHREAD_PRIO_INHERIT 或 PTHREAD_PRIO_PROTECT 初始化的互斥鎖 一個執行緒可以同時擁有多個混合使用 PTHREAD_PRIO_INHERIT 和 PTHREAD_PRIO_PROTECT 初始化的互斥鎖。在這種情況下,該執行緒將以通過其中任一協定獲取的最高優先權執行。
pthread_mutexattr_setprotocol 返回值
如果成功完成,pthread_mutexattr_setprotocol() 會返回 0。其他任何返回值都表示出現了錯誤。
如果出現以下任一情況,pthread_mutexattr_setprotocol() 將失敗並返回對應的值。
ENOSYS 描述: 選項 _POSIX_THREAD_PRIO_INHERIT 和 _POSIX_THREAD_PRIO_PROTECT 均未定義並且該實現不支持此函式。 ENOTSUP 描述: protocol 指定的值不受支持。 如果出現以下任一情況,pthread_mutexattr_setprotocol() 可能會失敗並返回對應的值。
EINVAL 描述: attr 或 protocol 指定的值無效。EPERM 描述: 調用方無權執行該操作。

獲取互斥鎖屬性的協定

pthread_mutexattr_getprotocol(3C)可用來獲取互斥鎖屬性對象的協定屬性。
pthread_mutexattr_getprotocol 語法
#include
int pthread_mutexattr_getprotocol(const pthread_mutexattr_t *attr, int *protocol);
attr 指示以前調用 pthread_mutexattr_init() 時創建的互斥鎖屬性對象。
protocol 包含以下協定屬性之一:PTHREAD_PRIO_NONE、PTHREAD_PRIO_INHERIT 或 PTHREAD_PRIO_PROTECT。
pthread_mutexattr_getprotocol 返回值
如果成功完成,pthread_mutexattr_getprotocol() 會返回 0。其他任何返回值都表示出現了錯誤。
如果出現以下情況,pthread_mutexattr_getprotocol() 將失敗並返回對應的值。
ENOSYS 描述: _POSIX_THREAD_PRIO_INHERIT 選項和 _POSIX_THREAD_PRIO_PROTECT 選項均未定義並且該實現不支持此函式。 如果出現以下任一情況,pthread_mutexattr_getprotocol() 可能會失敗並返回對應的值。
EINVAL 描述: attr 指定的值無效。EPERM 描述: 調用方無權執行該操作。

設定互斥鎖屬性的優先權上限

pthread_mutexattr_setprioceiling(3C)可用來設定互斥鎖屬性對象的優先權上限屬性。
pthread_mutexattr_setprioceiling 語法
#include
int pthread_mutexattr_setprioceiling(pthread_mutexatt_t *attr, int prioceiling, int *oldceiling);
attr 指示以前調用 pthread_mutexattr_init() 時創建的互斥鎖屬性對象。
prioceiling 指定已初始化互斥鎖的優先權上限。優先權上限定義執行互斥鎖保護的臨界段時的最低優先權。prioceiling 位於 SCHED_FIFO 所定義的優先權的最大範圍內。要避免優先權倒置,請將 prioceiling 設定為高於或等於可能會鎖定特定互斥鎖的所有執行緒的最高優先權。
oldceiling 包含以前的優先權上限值。
pthread_mutexattr_setprioceiling 返回值
如果成功完成,pthread_mutexattr_setprioceiling() 會返回 0。其他任何返回值都表示出現了錯誤。
如果出現以下任一情況,pthread_mutexattr_setprioceiling() 將失敗並返回對應的值。
ENOSYS 描述: 選項 _POSIX_THREAD_PRIO_PROTECT 未定義並且該實現不支持此函式。 如果出現以下任一情況,pthread_mutexattr_setprioceiling() 可能會失敗並返回對應的值。
EINVAL 描述: attr 或 prioceiling 指定的值無效。EPERM 描述: 調用方無權執行該操作。

獲取互斥鎖屬性的優先權上限

pthread_mutexattr_getprioceiling(3C)可用來獲取互斥鎖屬性對象的優先權上限屬性。
pthread_mutexattr_getprioceiling 語法
#include
int pthread_mutexattr_getprioceiling(const pthread_mutexatt_t *attr, int *prioceiling);
attr 指定以前調用 pthread_mutexattr_init() 時創建的屬性對象。
注 –
僅當定義了 _POSIX_THREAD_PRIO_PROTECT 符號時,attr 互斥鎖屬性對象才會包括優先權上限屬性。
pthread_mutexattr_getprioceiling() 返回 prioceiling 中已初始化互斥鎖的優先權上限。優先權上限定義執行互斥鎖保護的臨界段時的最低優先權。prioceiling 位於 SCHED_FIFO 所定義的優先權的最大範圍內。要避免優先權倒置,請將 prioceiling 設定為高於或等於可能會鎖定特定互斥鎖的所有執行緒的最高優先權。
pthread_mutexattr_getprioceiling 返回值
如果成功完成,pthread_mutexattr_getprioceiling() 會返回 0。其他任何返回值都表示出現了錯誤。
如果出現以下任一情況,pthread_mutexattr_getprioceiling() 將失敗並返回對應的值。
ENOSYS 描述: _POSIX_THREAD_PRIO_PROTECT 選項未定義並且該實現不支持此函式。 如果出現以下任一情況,pthread_mutexattr_getprioceiling() 可能會失敗並返回對應的值。
EINVAL 描述: attr 指定的值無效。EPERM 描述: 調用方無權執行該操作。

設定互斥鎖的優先權上限

pthread_mutexattr_setprioceiling(3C)可用來設定互斥鎖的優先權上限。
pthread_mutex_setprioceiling 語法
#include
int pthread_mutex_setprioceiling(pthread_mutex_t *mutex, int prioceiling, int *old_ceiling); pthread_mutex_setprioceiling() 可更改互斥鎖mutex 的優先權上限 prioceiling。 pthread_mutex_setprioceiling() 可鎖定互斥鎖(如果未鎖定的話),或者一直處於阻塞狀態,直到 pthread_mutex_setprioceiling() 成功鎖定該互斥鎖,更改該互斥鎖的優先權上限並將該互斥鎖釋放為止。鎖定互斥鎖的過程無需遵循優先權保護協定。
如果 pthread_mutex_setprioceiling() 成功,則將在 old_ceiling 中返回以前的優先權上限值。如果 pthread_mutex_setprioceiling() 失敗,則互斥鎖的優先權上限保持不變。
pthread_mutex_setprioceiling 返回值
如果成功完成,pthread_mutex_setprioceiling() 會返回 0。其他任何返回值都表示出現了錯誤。
如果出現以下情況,pthread_mutexatt_setprioceiling() 將失敗並返回對應的值。
ENOSYS 描述: 選項_POSIX_THREAD_PRIO_PROTECT 未定義並且該實現不支持此函式。 如果出現以下任一情況,pthread_mutex_setprioceiling() 可能會失敗並返回對應的值。
EINVAL 描述: prioceiling 所請求的優先權超出了範圍。EINVAL 描述: mutex 指定的值不會引用當前存在的互斥鎖。ENOSYS 描述: 該實現不支持互斥鎖的優先權上限協定。EPERM 描述: 調用方無權執行該操作。

獲取互斥鎖的優先權上限

pthread_mutexattr_getprioceiling(3C)可用來獲取互斥鎖的優先權上限。
pthread_mutex_getprioceiling 語法
#include
int pthread_mutex_getprioceiling(const pthread_mutex_t *mutex, int *prioceiling); pthread_mutex_getprioceiling() 會返回 mutex 的優先權上限 prioceiling。
pthread_mutex_getprioceiling 返回值
如果成功完成,pthread_mutex_getprioceiling() 會返回 0。其他任何返回值都表示出現了錯誤。
如果出現以下任一情況,pthread_mutexatt_getprioceiling() 將失敗並返回對應的值。
ENOSYS 描述: _POSIX_THREAD_PRIO_PROTECT 選項未定義並且該實現不支持此函式。 如果出現以下任一情況,pthread_mutex_getprioceiling() 可能會失敗並返回對應的值。
EINVAL 描述: mutex 指定的值不會引用當前存在的互斥鎖。ENOSYS 描述: 該實現不支持互斥鎖的優先權上限協定。EPERM 描述: 調用方無權執行該操作。

設定互斥鎖的強健屬性

pthread_mutexattr_setrobust_np(3C)可用來設定互斥鎖屬性對象的強健屬性。
pthread_mutexattr_setrobust_np 語法
#include
int pthread_mutexattr_setrobust_np(pthread_mutexattr_t *attr, int *robustness);
注 –僅當定義了符號 _POSIX_THREAD_PRIO_INHERIT 時,pthread_mutexattr_setrobust_np() 才適用。
attr 指示以前通過調用 pthread_mutexattr_init() 創建的互斥鎖屬性對象。
robustness 定義在互斥鎖的屬主失敗時的行為。pthread.h 中定義的 robustness 的值為 PTHREAD_MUTEX_ROBUST_NP 或 PTHREAD_MUTEX_STALLED_NP。預設值為 PTHREAD_MUTEX_STALLED_NP。
PTHREAD_MUTEX_ROBUST_NP 如果互斥鎖的屬主失敗,則以後對 pthread_mutex_lock() 的所有調用將以不確定的方式被阻塞。 PTHREAD_MUTEX_STALLED_NP互斥鎖的屬主失敗時,將會解除鎖定該互斥鎖。互斥鎖的下一個屬主將獲取該互斥鎖,並返回錯誤 EOWNWERDEAD。 注 –應用程式必須檢查 pthread_mutex_lock() 的返回代碼,查找返回錯誤 EOWNWERDEAD 的互斥鎖。互斥鎖的新屬主應使該互斥鎖所保護的狀態保持一致。如果上一個屬主失敗,則互斥鎖狀態可能會不一致。 如果新屬主能夠使狀態保持一致,請針對該互斥鎖調用 pthread_mutex_consistent_np(),並解除鎖定該互斥鎖。 如果新屬主無法使狀態保持一致,請勿針對該互斥鎖調用 pthread_mutex_consistent_np(),而是解除鎖定該互斥鎖。 所有等待的執行緒都將被喚醒,以後對 pthread_mutex_lock() 的所有調用都將無法獲取該互斥鎖。返回代碼為 ENOTRECOVERABLE。通過調用 pthread_mutex_destroy() 取消對互斥鎖的初始化,並調用 pthread_mutex_int() 重新初始化該互斥鎖,可使該互斥鎖保持一致。如果已獲取該鎖的執行緒失敗並返回 EOWNERDEAD,則下一個屬主獲取該鎖時將返回代碼 EOWNERDEAD。
pthread_mutexattr_setrobust_np 返回值
如果成功完成,pthread_mutexattr_setrobust_np() 會返回 0。其他任何返回值都表示出現了錯誤。
如果出現以下任一情況,pthread_mutexattr_setrobust_np() 將失敗並返回對應的值。
ENOSYS 描述: 選項 _POSIX_THREAD_PRIO__INHERIT 未定義,或者該實現不支持 pthread_mutexattr_setrobust_np()。 ENOTSUP 描述: robustness 指定的值不受支持。 pthread_mutexattr_setrobust_np() 可能會在出現以下情況時失敗:
EINVAL 描述: attr 或 robustness 指定的值無效。

獲取互斥鎖的強健屬性

pthread_mutexattr_getrobust_np(3C)可用來獲取互斥鎖屬性對象的強健屬性。
pthread_mutexattr_getrobust_np 語法
#include
int pthread_mutexattr_getrobust_np(const pthread_mutexattr_t *attr, int *robustness);
注 –僅當定義了符號 _POSIX_THREAD_PRIO_INHERIT 時,pthread_mutexattr_getrobust_np() 才適用。
attr 指示以前通過調用 pthread_mutexattr_init() 創建的互斥鎖屬性對象。
robustness 是互斥鎖屬性對象的強健屬性值。
pthread_mutexattr_getrobust_np 返回值
如果成功完成,pthread_mutexattr_getrobust_np() 會返回 0。其他任何返回值都表示出現了錯誤。
如果出現以下任一情況,pthread_mutexattr_getrobust_np() 將失敗並返回對應的
ENOSYS 描述: 選項 _POSIX_THREAD_PRIO__INHERIT 未定義,或者該實現不支持 pthread_mutexattr_getrobust_np()。 pthread_mutexattr_getrobust_np() 可能會在出現以下情況時失敗:
EINVAL 描述: attr 或 robustness 指定的值無效。

相關詞條

熱門詞條

聯絡我們