CreateThread函式 建立執行緒

2022-05-21 08:20:22 字數 962 閱讀 7560

微軟在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,把執行緒掛...