MFC多執行緒程式設計做時間顯示程式

2021-08-08 17:27:04 字數 1013 閱讀 5756

主要參考:

略有改動。

建立乙個基於對話方塊的工程multithread1,在對話方塊idd_multithread1_dialog中加入兩個按鈕和乙個編輯框,兩個按鈕的id分別是idc_start,idc_stop ,標題分別為「啟動」,「停止」,idc_stop的屬性選中disabled;編輯框的id為 idc_time ,屬性選中read-only;  

在multithread1dlg.h檔案中新增執行緒函式宣告: void

threadfunc();  

注意,執行緒函式的宣告應在類cmultithread1dlg的外部。 在類cmultithread1dlg內部新增protected

型變數: 

handle

hthread;  

dword

threadid;  

分別代表執行緒的控制代碼和id。   

在multithread1dlg.cpp檔案中新增全域性變數 m_brun : volatile

bool

m_brun;  

m_brun 代表執行緒是否正在執行。  

你要留意到全域性變數 m_brun 是使用 volatile

修飾符的,

volatile

修飾符的作用是告訴編譯器無需對該變數作任何的優化,即無需將它放到乙個暫存器中,並且該值可被外部改變。對於多執行緒引用的全域性變數來說,

volatile

是乙個非常重要的修飾符。  

編寫執行緒函式: void

threadfunc()  

}  該執行緒函式沒有引數,也不返回函式值。只要m_brun為true,執行緒一直執行。  

雙擊idc_start按鈕,完成該按鈕的訊息函式: void

cmultithread1dlg::onstart()   

雙擊idc_stop按鈕,完成該按鈕的訊息函式: void

cmultithread1dlg::onstop()   

編譯並執行該例程,體會使用win32 api編寫的多執行緒。   

MFC多執行緒程式設計

具體來說是 在mfc中呼叫attach的時候 有個巨集叫assert valid 這個方法不允許訪問非本執行緒建立的繼承於。在cwnd函式裡面有乙個valid 的靜態方法,檢測當前執行緒的mfc物件指標,是否在當前執行緒的map中 下面就是這個模組中線程狀態結構體 afx module thread...

MFC 多執行緒程式設計

mfc中有兩類執行緒 分別稱之為工作者執行緒和使用者介面執行緒 二者的主要區別在於工作者執行緒沒有訊息迴圈 而使用者介面執行緒有自己的訊息佇列和訊息迴圈 但對於 win32 的 api 程式設計而言 這兩種執行緒是沒有區別的 它們都只需執行緒的啟動位址即可啟動執行緒來執行任務 在mfc中 一般用全域...

MFC多執行緒程式設計總結

mfc多執行緒程式設計總結 mfc中,在多個執行緒之間通話 資料共享與同步的方法有 1.全域性變數。全域性變數需要用volatile宣告以防止使用暫存器導致出錯。也可以使用interlockedincrement在阻塞其它執行緒的條件下修改單個全域性變數。這是一種簡單的在同一程序中線程之間通話與資料...