多執行緒CreateThread函式的用法及注意事項

2021-06-09 02:00:33 字數 1392 閱讀 7163

當使用createprocess呼叫時,系統將建立乙個程序和乙個主線程。createthread將在主線程的基礎上建立乙個新執行緒,大致做如下步驟:

1在核心物件中分配乙個執行緒標識/控制代碼,可供管理,由createthread返回

2把執行緒退出碼置為still_active,把執行緒掛起計數置1

3分配context結構

4分配兩頁的物理儲存以準備棧,保護頁設定為page_readwrite,第2頁設為page_guard

5lpstartaddr和lpvthread值被放在棧頂,使它們成為傳送給startofthread的引數

6把context結構的棧指標指向棧頂(第5步)指令指標指向startofthread函式

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

handle createthread(

lpsecurity_attributes lpthreadattributes,      // pointer to security attributes

dword dwstacksize,                  // initial thread stack size

lpthread_start_routine lpstartaddress,       // pointer to thread function

lpvoid lpparameter,                   // argument for new thread

dword dwcreationflags,                // creation flags

lpdword lpthreadid                  // pointer to receive thread id

); 第乙個引數是指向security_attributes型態的結構的指標。在windows 98中忽略該引數。在windows nt中,它被設為null。

第二個引數是用於新執行緒的初始堆疊大小,預設值為0。在任何情況下,windows根據需要動態延長堆疊的大小。

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

dword winapi threadproc (pvoid pparam) ;

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

第五個引數通常為0,但當建立的執行緒不馬上執行時為旗標create_suspended。執行緒將暫停直到呼叫resumethread來恢復執行緒的執行為止。

第六個引數是乙個指標,指向接受執行緒id值的變數。

如:孫鑫mfc中的現象

intmain()

多執行緒CreateThread函式的用法及注意事項

原文出自 當使用createprocess呼叫時,系統將建立乙個程序和乙個主線程。createthread將在主線程的基礎上建立乙個新執行緒,大致做如下步驟 1在核心物件中分配乙個執行緒標識 控制代碼,可供管理,由createthread返回 2把執行緒退出碼置為still active,把執行緒掛...

c 多執行緒createThread的用法

windows多執行緒 一 建立執行緒 createthread 修改說明 這裡 說了另一種建立執行緒方法,使用 beginthreadex 更安全的建立執行緒,在實際使用中盡量使用 beginthreadex 來建立執行緒,在部落格中使用 createthread l來建立執行緒其實是一種不太好的...

CreateThread函式 建立執行緒

微軟在windows api中提供了建立新的執行緒的函式createthread,概述 當使用createprocess呼叫時,系統將建立乙個程序和乙個主線程。createthread將在主線程的基礎上建立乙個新執行緒,大致做如下步驟 1在核心物件中分配乙個執行緒標識 控制代碼,可供管理,由crea...