利用策略模式實現的執行緒同步
標頭檔案
#ifndef __mutex_demo__
#define __mutex_demo__
#include
//鎖介面類
class ilock
virtual
void lock() = 0;
virtual
void unlock() = 0;
};//互斥型的鎖
class mutexlock:public ilock
~mutexlock()
virtual
void lock() ;
virtual
void unlock() ;
private:
handle m_mutex;
};//臨界區的鎖
class criticallock:public ilock
~criticallock()
virtual
void lock() ;
virtual
void unlock() ;
private:
critical_section m_critical;
};//同步
class synchronize
~synchronize()
private:
ilock& m_lock;
};#endif
cpp檔案
#include
"mutex_demo.h"
void mutexlock::lock()
void mutexlock::unlock()
void criticallock::lock()
void criticallock::unlock()
//使用方法 1:
mutexlock mutex;
void func()
}int main()
//使用方法 2:
criticallock critical;
void func()
}int main()
區域性變數synchronize synch在函式走完後,會呼叫析構函式解鎖。所以,所以對於想偷懶的人來說,這是乙個好的實現方式
上面的**使用了策略模式,具體的uml圖如下利用互斥物件實現執行緒同步
程式是計算機指令的集合,它以檔案的形式儲存在磁碟上。而程序通常被定義為乙個正在執行的程式的例項,是乙個程式在其自身的位址空間中的一次執行活動 程序從來不執行任何東西,真正完成 執行的是執行緒,而程序只是執行緒的容器,或者說是執行緒的執行環境 當建立乙個程序時,作業系統會自動建立這個程序的第乙個執行緒...
利用互斥物件實現執行緒同步
mutex 屬於核心物件,能夠保證執行緒對單個資源的互斥訪問權。建立互斥物件需要呼叫的函式,createmutex handle winapi createmutex lpsecurity attributes lpmutexattributes 指向security attributes 結構的指...
利用事件物件實現執行緒同步
事件物件也屬於核心物件,包含乙個使用計數,乙個用於指明該事件是乙個自動重置事件還是人工重置事件的bool值,另乙個用於指明該事件處於已通知狀態 有訊號狀態 還是未通知狀態 無訊號狀態 的bool值,當人工重置的事件得到通知時,等待該事件的所有執行緒均變為可排程執行緒,需要用resetevent函式設...