//简单的windows多线程实例,记录参考。
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
typedef struct thread_param{
int threadno;
char str[20];
}T_PARAM;
void * myFunc(void *str);
int main(int argc,char *argv[])
{
int i = 0;
HANDLE h_thread[2000];
T_PARAM *myparas;
T_PARAM *mypara;
char str[]="test";
myparas = (T_PARAM *)malloc(sizeof(T_PARAM)*2000);
if(myparas == NULL)
{
printf("Malloc Error!\n");
return -1;
}
memset(myparas,0,sizeof(T_PARAM)*2000);
for(i = 0;i<2000;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;
}
if(mypara->threadno % 100 == 0)
{
printf("\n\n******************************\n\n");
Sleep(2*1000);
}
printf("ThreadNo [%d] Start Suc!!!\n",mypara->threadno);
}
for(i = 0;i<2000;i++)
{
WaitForSingleObject(h_thread[i],INFINITE);
CloseHandle(h_thread[i]);
}
free(myparas);
printf("Excl Suc!!!\n");
return 0;
}
void * myFunc(void *str)
{
T_PARAM *para=NULL;
para = (T_PARAM *)str;
return 0;
}
启动线程并记录情况。
unix/linux只需更改于windows对应的线程函数即可。