Windows 的多執行緒程式設計初步

2021-08-29 18:44:23 字數 1123 閱讀 6749

一般情況下多執行緒程式設計多採用mfc類庫實現,那麼如果不使用mfc 如何進行多執行緒程式設計呢?本文將就這個問題進行討論:

微軟在windows api中提供了建立新的執行緒的函式createthread,它的語法如下:

hthread = createthread (&security_attributes, dwstacksize, threadproc,pparam, dwflags, &idthread) ;

第乙個引數是指向security_attributes型態的結構的指標。在windows 98中忽略該引數。在windows nt中,它被設為null。第二個引數是用於新執行緒的初始堆疊大小,預設值為0。在任何情況下,windows根據需要動態延長堆疊的大小。

createthread的第三個引數是指向執行緒函式的指標。函式名稱沒有限制,但是必須以下列形式宣告:

dword winapi threadproc (pvoid pparam) ;

createthread的第四個引數為傳遞給threadproc的引數。這樣主線程和從屬執行緒就可以共享資料。

createthread的第五個引數通常為0,但當建立的執行緒不馬上執行時為旗標create_suspended。執行緒將暫停直到呼叫resumethread來恢復執行緒的執行為止。第六個引數是乙個指標,指向接受執行緒id值的變數。

hthread = _beginthread (threadproc, uistacksize, pparam) ;

它更簡單,對於大多數應用程式很完美,這個執行緒函式的語法為:

void __cdecl threadproc (void * pparam) ;

在建立多執行緒的windows程式時,需要在「project settings」對話方塊中做一些修改。選擇「c/c++」頁面標籤,然後在「category」下拉式清單方塊中選擇「code generation」。在「use run-time library」下拉式清單方塊中,可以看到用於「release」設定的「single-threaded」和用於debug設定的「debug single-threaded」。將這些分別改為「multithreaded」和「debug multithreaded」。這將把編譯器旗標改為/mt,它是編譯器在編譯多執行緒的應用程式所需要的。

第乙個demo.

基於windows的多執行緒程式設計初步介紹

基於windows的多執行緒程式設計 基於windows下的多執行緒程式設計,首先我們需要了解建立執行緒的函式createthread,createthread 將在主線程的基礎上建立乙個新執行緒。函式原型 handle createthread lpsecurity attributelpthre...

初步理解多執行緒程式設計

1.繼承thread類,重寫run 方法thread本質上也是實現了runnable介面的乙個例項。需要注意的是呼叫start 方法後並不是立即地執行多執行緒的 而是使該執行緒變為可執行態,什麼時候執行多執行緒 是由作業系統決定的。以下是其 主要步驟 1 定義thread類的子類,並重寫該類的run...

Windows多執行緒程式設計

一 問題的提出 編寫乙個耗時的單執行緒程式 新建乙個基於對話方塊的應用程式singlethread,在主對話方塊idd singlethread dialog新增乙個按鈕,id為idc sleep six second,標題為 延時6秒 新增按鈕的響應函式,如下 void csinglethread...