/*這是一個多線程編程的簡單一實例。首先,建立一個win32 Console App,其次,確認如下設定: project->property->Configuration Properties ->C/C++->Code Generation->Runtime Library->Multi-thread DLL(/MD)*/ #include<stdafx.h> #include <stdio.h> #include <stdlib.h> #include <windows.h> typedef struct thread_param{ int threadno; char str[20]; }T_PARAM; void * myFunc(T_PARAM *ww); int main(int argc,char *argv[]) { int i = 0; HANDLE h_thread[20]; T_PARAM *myparas; T_PARAM *mypara; char str[]="test"; myparas = (T_PARAM *)malloc(sizeof(T_PARAM)*20); if(myparas == NULL) { printf("Malloc Error!\n"); return -1; } memset(myparas,0,sizeof(T_PARAM)*20); for(i = 0;i<20;i++) { mypara = myparas + i; mypara->threadno = i; strcpy(mypara->str,str); h_thread[i] = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)myFunc,(LPVOID)mypara,0,NULL); if(h_thread[i] == NULL) { printf("Thread No[%d] Start Failed!\n",i); return -2; } } for(i = 0;i<20;i++) { WaitForSingleObject(h_thread[i],INFINITE); CloseHandle(h_thread[i]); } free(myparas); printf("Excl Suc!!!\n"); return 0; } void * myFunc(T_PARAM *ww) { printf("%d\n",ww->threadno); return 0; }
註:參考引用文章:windows多線程執行個體 。謝謝其作者-- NowDoIT