構建線程參數結構體:
typedef struct { int nIndex; HANDLE hThread; int param1; ... }ThreadParam;
創建線程數組:
ThreadParam threadParam[16];
創建一個線程,用來創建線程:
CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)StartThread, threadParam, NULL, NULL);
創建線程函數體:
//初始化線程 for(int i = 0; i < 16; i++) { //初始化事件對象 g_hEvent[i] = CreateEvent(NULL,//默認安全屬性 NULL,//設置為自動重置 FALSE,//初始狀態為無信號 NULL);//匿名 //初始化索引值 threadParam[i].nIndex = i; threadParam[i].hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ThreadFunc,(LPVOID)&threadParam[i], NULL, NULL); }
線程函數:
int WINAPI TheadFunc(LPVOID lpParam) { ThreadParam* threadParam = (ThreadParam *) lpParam; int nIndex = threadParam->nIndex; int dwRtn; while(true) { WaitForSingleObject(g_hEvent[nIndex], INFINITE); do something ... } return dwRtn; }