簡單多執行緒同步 互斥鎖

2021-08-01 20:17:40 字數 960 閱讀 2224

/*

名稱:多執行緒通訊中同步–互斥鎖

說明:多執行緒由於共享一部分資料段,所以當不同的執行緒對這部分資料進行訪問的時候,就需要進行同步。以防出現資料的不一致。就我現在了解,執行緒中的同步有兩種方式,一是這裡的互斥鎖,二是訊號量。互斥鎖,通俗說,就是只有當執行緒拿到這把鎖之後才能進行一系列操作(包括對互斥變數的操作)。在這期間其他程序由於沒有鎖,只能陷入阻塞等待狀態。當完成操作後,執行緒需要釋放鎖,否則可能會陷入死鎖狀態。

在本例中,如果去掉鎖,則最終答案為250,即出現了資料的不一致。加上鎖後,答案為300,具有資料的一致性。互斥鎖的使用過程中,主要有pthread_mutex_init,pthread_mutex_destory,pthread_mutex_lock,pthread_mutex_unlock這幾個函式以完成鎖的初始化,鎖的銷毀,上鎖和釋放鎖操作。

在此簡單介紹一點:

(1).鎖可以用pthread_mutex_init函式動態的建立,函式原型如下:

int pthread_mutex_init(pthread_mutex_t mutex, const pthread_mutexattr_t attr)

(2).對鎖的操作主要有加鎖和解鎖

int pthread_mutex_lock(pthread_mutex_t *mutex)

int pthread_mutex_unlock(pthread_mutex_t *mutex)

#include 

#include

#include

//全域性變數

int a = 200;

int b = 100;

pthread_mutex_t lock; //宣告互斥鎖

void threada()

void threadb()

int main(void)

iOS 多執行緒 鎖 互斥 同步

在ios中有幾種方法來解決多執行緒訪問同乙個記憶體位址的互斥同步問題 方法一,synchronized id anobject 最簡單的方法 會自動對引數物件加鎖,保證臨界區內的 執行緒安全 cpp view plain copy print?synchronized self 方法二,nslock...

Linux多執行緒同步 互斥鎖

當多個執行緒對同乙個資源進行訪問的時候,為了這個資源的安全性,我們需要對這個資源進行鎖定,規定同一時間只有乙個資源能夠獲得該鎖的鑰匙,其它執行緒要獲得該資源需要等待該執行緒 互斥鎖建立 pthread mutex t mutex 互斥鎖初始化 mutex pthread mutex initiali...

IOS多執行緒 鎖 互斥 同步

方法一,synchronized id anobject 最簡單的方法 會自動對引數物件加鎖,保證臨界區內的 執行緒安全 synthesize self 方法二,nslock nslock 物件實現了 nslocking protocol 包含幾個方法 lock 加鎖 unlock 解鎖 trylo...