Linux學習之 互斥量實現多讀單寫鎖

2022-08-28 18:12:06 字數 857 閱讀 1440

測試(其餘**相同):

view code

#include 

#include

#include "

clthread.h

"#include "

clexecutivefunctionprovider.h

"#include "

clmutex.h

"#include "

clcriticalsection.h

"using

namespace std;

intglobal = 0;

class clmyfunction : public clexecutivefunctionprovider

virtual ~clmyfunction()

virtual clstatus runexecutivefunction(void *pcontext)

return clstatus(0, 0);}};

int main()

pthread1->waitfordeath();

pthread2->waitfordeath();

delete pthread2;

delete pthread1;

delete myfunction1;

delete myfunction2;

delete preadmutex1;

delete preadmutex2;

delete pwritemutex;

return

0;}

對寫來說(從加寫鎖到釋放寫鎖),就是要獲得其它每個讀鎖(讀互斥量)。

注意新增的那對大括號,保證了範圍內鎖的釋放。

Linux執行緒同步之互斥量(mutex)

互斥量 也稱為互斥鎖 出自posix 執行緒標準,可以用來同步同一程序中的各個執行緒。當然如果乙個互斥量存放在多個程序共享的某個記憶體區中,那麼還可以通過互斥量來進行程序間的同步。互斥量,從字面上就可以知道是相互排斥的意思,它是最基本的同步工具,用於保護臨界區 共享資源 以保證在任何時刻只有乙個執行...

Linux執行緒同步(一)之使用互斥量(互斥鎖)

當多個控制線程共享相同的記憶體時,需要確保每個執行緒看到一致的資料檢視。如果每個執行緒使用的變數都是其他執行緒不會讀取或修改的,那麼就不存在一致性問題。同樣地,如果變數是唯讀的,多個執行緒同時讀取該量也不會有一致性問題。但是,當某個執行緒可以修改變數,而其他執行緒也可以讀取或者修改這個變數的時候,就...

Linux學習之 使條件變數互斥量避免無限等待

view code include include include clthread.h include clexecutivefunctionprovider.h include clmutex.h include clcriticalsection.h include clconditionva...