利用策略模式實現的執行緒同步

2021-06-29 12:06:54 字數 1474 閱讀 6863

利用策略模式實現的執行緒同步

標頭檔案

#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函式設...