當使用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...