微軟在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值的變數