Win32 API 多執行緒程式設計例程一

2021-06-05 22:30:20 字數 907 閱讀 2889

例程1 multithread1

建立乙個基於對話方塊的工程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編寫的多執行緒。

Win32 API 多執行緒程式設計例程二

例程2 multithread2 該執行緒演示了如何傳送乙個乙個整型的引數到乙個執行緒中,以及如何等待乙個執行緒完成處理。建立乙個基於對話方塊的工程multithread2,在對話方塊idd multithread2 dialog中加入乙個編輯框和乙個按鈕,id分別是idc count,idc st...

多執行緒程式設計win32 API

win32 提供了一系列的api函式來完成執行緒的建立 掛起 恢復 終結以及通訊等工作。下面將選取其中的一些重要函式進行說明。1 handle createthread lpsecurity attributes lpthreadattributes,dword dwstacksize,lpthre...

win32 API實現多執行緒小例程

1.api函式 2.程式設計例項 void threadfunc 執行緒函式 static bool m brun 全域性變數 對話方塊類內 handle hthread 執行緒函式的控制代碼 dword threadid 執行緒函式的id 原始檔 類外新增 執行緒函式 void threadfun...