Windows執行緒(二)最簡單的多執行緒建立
阿新 • • 發佈:2018-12-26
一段最簡單的多執行緒建立程式碼如下:
#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