CreateThread函數–建立線程

來源:互聯網
上載者:User
微軟在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值的變數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.