创建简单线程
本例中创建三个子线程,main函数本身是主线程,主线程结束,子线程就跟着中止。

程序如下:
#include <stdio.h>
#include <windows.h>

static int count1,count2,count3;

DWORD WINAPI The_One(LPVOID no)

...{
int i;
for(i=0;i<5;i++)

...{
printf("I'm 1 /n");
count1++;
Sleep(100);//控制快慢,执行速度中
}
return 0;
}

DWORD WINAPI The_Two(LPVOID no)

...{
int i;
for(i=0;i<5;i++)

...{printf("I'm 2 /n");
count2++;
Sleep(10);//控制快慢,执行速度快
}
return 0;
}

DWORD WINAPI The_Three(LPVOID no)

...{
int i;
for(i=0;i<5;i++)

...{printf("I'm 3 /n");
count3++;
Sleep(800);//控制快慢,执行速度慢
}
return 0;
}
int main()

...{
HANDLE thread[3];//建立三个线句柄(空指针)
DWORD thread1id,thread2id,thread3id;

thread[0]=CreateThread(NULL,0,The_One,NULL,0,&thread1id);//子线程一
if(thread[0]==NULL)

...{
printf("CreateThread for The_One Error: %d /n",GetLastError());
return -1;
}
thread[1]=CreateThread(NULL,0,The_Two,NULL,0,&thread2id);//子线程二
if(thread[1]==NULL)

...{
printf("CreateThread for The_Two Error: %d /n",GetLastError());
return -1;
}

thread[2]=CreateThread(NULL,0,The_Three,NULL,0,&thread3id);//子线程三
if(thread[2]==NULL)

...{
printf("CreateThread for The_Three Error: %d /n",GetLastError());
return -1;
}
//等待线程,0改成1或2看看效果
WaitForSingleObject(thread[1],INFINITE);
CloseHandle(thread[0]);//关闭线程
CloseHandle(thread[1]);
CloseHandle(thread[2]);
printf("Thread1 count=%d/5 /n",count1);
printf("Thread2 count=%d/5 /n",count2);
printf("Thread3 count=%d/5 /n",count3);
return 0;
}
