測試(其餘**相同):
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...