windows多線程(一) 建立線程 CreateThread

來源:互聯網
上載者:User

標籤:std   sum   調度   ddr   thread   分享圖片   主線程   功能   參數   

一 線程建立函數 CreateThread1. 函數原型:
    HANDLE WINAPI CreateThread(      _In_opt_  LPSECURITY_ATTRIBUTES  lpThreadAttributes,         _In_      SIZE_T                 dwStackSize,      _In_      LPTHREAD_START_ROUTINE lpStartAddress,      _In_opt_  LPVOID                 lpParameter,      _In_      DWORD                  dwCreationFlags,      _Out_opt_ LPDWORD                lpThreadId    );
2. 參數說明:
  • 第一個參數 lpThreadAttributes 表示線程核心對象的安全屬性,一般傳入NULL表示使用預設設定。

  • 第二個參數 dwStackSize 表示線程棧空間大小。傳入0表示使用預設大小(1MB)。

  • 第三個參數 lpStartAddress 表示新線程所執行的線程函數地址,多個線程可以使用同一個函數地址。

  • 第四個參數 lpParameter 是傳給線程函數的參數。

  • 第五個參數 dwCreationFlags 指定額外的標誌來控制線程的建立,為0表示線程建立之後立即就可以進行調度,如果為CREATE_SUSPENDED則表示線程建立後暫停運行,這樣它就無法調度,直到調用ResumeThread()。

  • 第六個參數 lpThreadId 將返回線程的ID號,傳入NULL表示不需要返回該線程ID號。

3.傳回值

線程建立成功返回新線程的控制代碼,失敗返回NULL

二 執行個體
/* 建立第一個線程。主進程結束,則撤銷線程。 */#include<Windows.h>#include<stdio.h>DWORD WINAPI ThreadFunc(LPVOID);void main(){    HANDLE hThread;    DWORD  threadId;    hThread = CreateThread(NULL, 0, ThreadFunc, 0, 0, &threadId); // 建立線程    printf("我是主線程, pid = %d\n", GetCurrentThreadId());  //輸出主線程pid    Sleep(2000);}DWORD WINAPI ThreadFunc(LPVOID p){       printf("我是子線程, pid = %d\n", GetCurrentThreadId());   //輸出子線程pid    return 0;}

這個程式功能很簡單,主線程建立一個線程,同時主線程和子線程分別向控制台輸出線程的PID,如:

windows多線程(一) 建立線程 CreateThread

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.