微軟在windows api中提供了建立新的執行緒的函式createthread,
概述:當使用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) ;
引數說明:
第乙個引數是指向security_attributes型態的結構的指標。在windows 98中忽略該引數。在windows nt中,它被設為null。第二個引數是用於新執行緒的初始堆疊大小,預設值為0。在任何情況下,windows根據需要動態延長堆疊的大小。
createthread的第三個引數是指向執行緒函式的指標。函式名稱沒有限制,但是必須以下列形式宣告:
dword winapi threadproc (pvoid pparam) ;
createthread的第四個引數為傳遞給threadproc的引數。這樣主線程和從屬執行緒就可以共享資料。
createthread的第五個引數通常為0,但當建立的執行緒不馬上執行時為旗標create_suspended。執行緒將暫停直到呼叫resumethread來恢復執行緒的執行為止。第六個引數是乙個指標,指向接受執行緒id值的變數
CreateThread函式使用
摘自 萬一的部落格 functionmyfun p pointer integer stdcall var i integer begin fori 0 to500000 do begin form1.canvas.lock form1.canvas.textout 10,10,inttostr i...
多執行緒CreateThread函式的用法及注意事項
當使用createprocess呼叫時,系統將建立乙個程序和乙個主線程。createthread將在主線程的基礎上建立乙個新執行緒,大致做如下步驟 1在核心物件中分配乙個執行緒標識 控制代碼,可供管理,由createthread返回 2把執行緒退出碼置為still active,把執行緒掛起計數置1...
多執行緒CreateThread函式的用法及注意事項
原文出自 當使用createprocess呼叫時,系統將建立乙個程序和乙個主線程。createthread將在主線程的基礎上建立乙個新執行緒,大致做如下步驟 1在核心物件中分配乙個執行緒標識 控制代碼,可供管理,由createthread返回 2把執行緒退出碼置為still active,把執行緒掛...