在程式設計中,引入了物件互斥鎖的概念,來保證共享資料操作的完整性。每個物件都對應於乙個可稱為" 互斥鎖" 的標記,這個標記用來保證在任一時刻,只能有乙個執行緒訪問該物件。
表頭檔案
#include
定義函式
int pthread_mutex_init( pthread_mutex_t *mutex, const pthread_mutex_attr_t* attr );
函式說明
該函式初始化乙個互斥體變數,如果引數attr 為null,則互斥體變數mutex 使用預設的屬性。
返回值表頭檔案
#include
定義函式
int pthread_mutex_destroy ( pthread_mutex_t *mutex );
函式說明
該函式用來釋放分配給引數mutex 的資源。
返回值呼叫成功時返回值為 0, 否則返回乙個非0 的錯誤**。
表頭檔案
#include
定義函式
int pthread_mutex_lock( pthread_mutex_t *mutex );
函式說明
該函式用來鎖住互斥體變數。如果引數mutex 所指的互斥體已經被鎖住了,那麼發出呼叫的執行緒將被阻塞直到其他執行緒對mutex 解鎖。
返回值表頭檔案
#include
定義函式
int pthread_mutex_trylock( pthread_t *mutex );
函式說明
該函式用來鎖住mutex 所指定的互斥體,但不阻塞。
返回值如果該互斥體已經被上鎖,該呼叫不會阻塞等待,而會返回乙個錯誤**。
表頭檔案
#include
定義函式
int pthread_mutex_unlock( pthread_mutex_t *mutex );
函式說明
該函式用來對乙個互斥體解鎖。如果當前執行緒擁有引數mutex 所指定的互斥體,該呼叫將該互斥體解鎖。
返回值
#include #include#include#includeusing namespace std;
#define max 10000
int number;
//建立一把互斥鎖
pthread_mutex_t mutex;
void* funca_num(void* arg)
return null;
}void* funcb_num(void* arg)
return null;
}int main(int argc,const char* argv)
cpu處理乙個指令,執行緒/程序在處理完這個指令之前是不會失去cpu的 linux執行緒互斥鎖
使用執行緒編寫程式需要技巧,而多執行緒的程式中的bug非常難以跟蹤 除錯,因為這些bug經常是難以再現的。競爭條件 當乙個執行緒訪問乙個資料結構的時候,另乙個執行緒也訪問同乙個資料結構,這時就出現了競爭條件 兩個執行緒 也可能是多個 競爭對同乙個資源的訪問。當其中乙個執行緒處理到一部分的時候,另外的...
linux 執行緒互斥鎖
一,鎖的建立 鎖可以被動態或靜態建立,可以用巨集pthread mutex initializer來靜態的初始化鎖,採用這種方式比較容易理解,互斥鎖是pthread mutex t的結構體,而這個巨集是乙個結構常量,如下可以完成靜態的初始化鎖 pthread mutex t mutex pthrea...
Linux執行緒互斥鎖
一,鎖的建立 鎖可以被動態或靜態建立,可以用巨集pthread mutex initializer來靜態的初始化鎖,採用這種方式比較容易理解,互斥鎖是pthread mutex t的結構體,而這個巨集是乙個結構常量,如下可以完成靜態的初始化鎖 pthread mutex t mutex pthrea...