int pthread_mutex_init

int pthread_mutex_init

int pthread_mutex_init是一條指令,是中斷指令的標識。

該函式用於C函式的多執行緒編程中,互斥鎖的初始化。

頭檔案:#include <pthread.h>

函式原型:int pthread_mutex_init(pthread_mutex_t *restrict mutex,const pthread_mutexattr_t *restrict attr);

pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;

基本介紹

  • 外文名:int pthread_mutex_init
  • 釋義:中斷指令的標識
  • 用途:C函式多執行緒編程中互斥鎖初始化
  • 頭檔案:#include <pthread.h>
指令介紹,互斥鎖屬性,設定範圍,獲取範圍,設定屬性,獲取類型屬性,設定屬性協定,獲取屬性協定,優先權上限,

指令介紹

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.h>
pthread_mutexattr_t mattr;
int ret;/* initialize an attribute to default value */
ret = pthread_mutexattr_init(&mattr);
調用此函式時,pthread 屬性的預設值為 PTHREAD_PROCESS_PRIVATE。 該值表示可以在進程內使用經過初始化的互斥鎖
mattr 的類型為 opaque,其中包含一個由系統分配的屬性對象。mattr 範圍可能的值為 PTHREAD_PROCESS_PRIVATE 和 PTHREAD_PROCESS_SHARED。PTHREAD_PROCESS_PRIVATE 是預設值。
對於互斥鎖屬性對象,必須首先通過調用 pthread_mutexattr_destroy(3C) 將其銷毀,才能重新初始化該對象。pthread_mutexattr_init() 調用會導致分配類型為 opaque 的對象。如果未銷毀該對象,則會導致記憶體泄漏。

相關詞條

熱門詞條

聯絡我們