C语言多线程
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<process.h>
#include<Windows.h>
//阻塞模式,与 并行模式 的区别。
void gogo(void *p)
{
int *pi = p;
/*Sleep(2000);
printf("A");*/
//return;//线程 执行完成 后返回
int i = 0;
while (1)
{
if (i > 5)
{
printf("%d\t %d\n", i,*pi);
_endthread(); //结束当前线程
}
Sleep(1000);
i++;
}
}
void time(void *p)
{
int i = 0;
while (1)
{
char str[100] = { 0 };
sprintf(str, "title 当前时间第 %d 秒", i);
system(str);
i++;
Sleep(1000);
}
}
void main()
{
/*
如果不使用线程,死循环的tiem()函数会让程序无法执行下去。
阻塞模式
*/
//time(NULL);
_beginthread(time, 0, 0);
for (int i = 0; i < 3; i++)
{
HANDLE hd = _beginthread(gogo, 0, &i);
//使用WaitForSingleObject() 可使用线程一个一个执行 阻塞模式.
//而不使用 WaitForSingleObject() 线程是并行的。
WaitForSingleObject(hd,INFINITE); //阻塞模式:必须让一个线程执行完程后才能执行下一个线程。
Sleep(1000);
}
//主线程退出,则所有的线程都将退出。
getchar();
//system("pause");
}