C 封裝執行緒類的實現方法

2022-10-04 04:09:11 字數 2216 閱讀 2847

複製** **如下:

// 給主視窗的通知訊息 

#define wm_cutterstart wm_user + 100    // wparam == ***  lparam==***x 

/* 

外面呼叫這個類時,只需要isrunning() start***(***) suspend***()   resume***() stop***() 

*/ 

/* 

m_bcontinue在真正的工作**dosomething中檢測,在退出和類析構時設為false,在reset時和構造時設為true  標誌內部是否繼續工作 

m_brunning  在start*** suspend*** resume*** 中檢測,在構造時和reset時設為false,在_threadentry得到waitforsingleobject時設為true 

外部通過isrunning得到是否正在執行 

*/ 

class cmyclass 

;   

// 建構函式 

cmyclass(hwnd hwndnotify); //接收視窗控制代碼 

&nbsychunp;

// 屬性 對外開放 

bool isrunning() const   //對外 

// 操作  對外開放 

bool start***(***); 

bool suspend***(); 

bool resume***(); 

void stop***(); 

// 具體實現 

public: 

~cfilecutter(); //析構 

protected: 

// 重置引數資訊和狀態標誌 

void reset(); 

// 真正的工作核心** 

void dosomething(); 

// 工作執行緒 

uint friend _threadentry(lpvoid lpparam); 

// 狀態標誌 

bool m_bcontinue;   //  是否繼續工作 dosomething中檢測,如果在dosomething中不m_bcontinue,就中止工作 

bool m_brunning;    //  是否處於工作狀態 

// 同步以上兩組資料 

critical_section m_cs;  // data gard 

private: 

//ychun 物件的生命週期全域性有效的資料 

hwnd m_hwndnotify;  // 接受訊息通知事件的視窗控制代碼 

handle m_hworkevent;    // 通知開始工作的事件物件控制代碼 

cwinthread* m_pthread;  // 工作執行緒 

bool m_bsuspend;    // 暫停標誌 

bool m_bexitthread; // 退出標誌 

}; 

//構造 

cmyclass::cmyclass() 

// 內部工作執行緒 

uint _threadentry(lpvoid lpparam) 

return 0; 

}   

void cmyclass::reset() 

cmyclass::~cmyclass() 

bool cmyclass::start***(***) 

bool cmyclass::suspend***() 

return true; 

}   

bool cmyclass::resume***() 

return true; 

}   

void cmyclass::stop***() 

//-------------------------實現**-------------------------// 

//真正的工作** 

void cmyclass::dosomething() 

// 通知使用者,工作完成 

::postmessage(m_hwndnotify, wm_cutterstop, exitsuccess, ncompleted); 

本文標題: c++封裝執行緒類的實現方法

本文位址:

caffe 執行緒封裝類

test.hpp ifndef internal thread hpp define internal thread hpp include include using boost shared ptr namespace boost class internalthread virtual int...

C thread 執行緒封裝類

思路是這樣的,寫乙個thread抽象類,有函式virtual void run 0,類中呼叫window api函式createthread 建立並啟動執行緒,所有執行緒都執行同乙個靜態函式threadfunction lpvoid param param傳遞執行緒物件的this指標 createt...

C語言封裝執行緒與日誌類

折騰了兩天,查半天資料還是不如自己動動手。如題這是兩個很常見的問題,雖然很多語言都封裝了執行緒,但是讓自己寫乙個還是比較麻煩的,這兒做乙個簡單的demo,大家可以去完善。日誌工具包 define max msg text 1024 10 define max msg title 1024 日誌訊息結...