Linux 執行緒 互斥鎖(一)

2021-08-24 17:52:49 字數 1392 閱讀 2555

在程式設計中,引入了物件互斥鎖的概念,來保證共享資料操作的完整性。每個物件都對應於乙個可稱為" 互斥鎖" 的標記,這個標記用來保證在任一時刻,只能有乙個執行緒訪問該物件。

表頭檔案

#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...