1. 程式人生 > >Windows執行緒(二)最簡單的多執行緒建立

Windows執行緒(二)最簡單的多執行緒建立

一段最簡單的多執行緒建立程式碼如下:

#include <stdio.h>
#include <process.h>
#include <Windows.h>

#define THREAD_NUM 5


unsigned int __stdcall ThreadFun(PVOID pM)
{
    printf("執行緒ID號為%4d的子執行緒說:Hello Thread\n",GetCurrentThreadId());
    return 0;
}

int main()
{
    HANDLE handle[THREAD_NUM];
    int
i; printf("----------------------------建立多個子執行緒簡單例項----------------------------\n"); for(i = 0; i < THREAD_NUM; i++) { handle[i] = (HANDLE)_beginthreadex(NULL, 0, ThreadFun, NULL, 0, NULL); } WaitForMultipleObjects(THREAD_NUM, handle, 1, INFINITE); system("pause"); system("pause"
); return 0; }

_CRTIMP uintptr_t __cdecl _beginthreadex
(
    _In_opt_ void * _Security, 
    _In_ unsigned _StackSize,
    _In_ unsigned (__stdcall * _StartAddress) (void *), 
    _In_opt_ void * _ArgList, 
    _In_ unsigned _InitFlag, 
);

void *security:安全屬性,NULL為預設安全屬性
unsigned stack_size:指定執行緒堆疊的大小。如果為0,則執行緒堆疊大小和建立它的執行緒的相同。一般用0
unsigned ( __stdcall start_address )( void

):指定執行緒函式的地址,也就是執行緒呼叫執行的函式地址(用函式名稱即可,函式名稱就表示地址)
void *arglist:傳遞給執行緒的引數的指標,可以通過傳入物件的指標,線上程函式中再轉化為對應類的指標
unsigned initflag:執行緒初始狀態,0:立即執行;CREATE_SUSPEND:suspended(懸掛)
unsigned *thrdaddr:用於記錄執行緒ID的地址


以上程式碼在Visual Studio 2010中執行結果如下:
這裡寫圖片描述


參考文獻:http://blog.csdn.net/morewindows/article/details/7421759