#include <iostream>
#include "windows.h"
using namespace std;
int j=0;
DWORD WINAPI MyThreadOne(LPVOID lp)
{
int *i = (int*)lp;
*i = *i + 1;
//int j=0;
while (j<20)
{
cout<<++j<<endl;
Sleep(500);
}
//Sleep(2000);
return *i;
}
int main()
{
int i = 2;
DWORD dExit = 0;
HANDLE hONE = CreateThread(NULL,0,MyThreadOne,(LPVOID)&i,0,NULL);
cout<<" "<<GetExitCodeThread(hONE,&dExit)<<endl;
cout<<" "<<(dExit==STILL_ACTIVE)<<endl;
WaitForSingleObject(hONE,INFINITE); //等待核心对象的激发,然后返回
cout<<GetExitCodeThread(hONE,&dExit)<<endl;
cout<<(dExit==STILL_ACTIVE)<<endl;
CloseHandle(hONE);
getchar();
Sleep(2000);
//ExitThread(4); //退出线程,并没有结束其他线程,
return 0; //这里退出时调用了CRT的返回函数,然后系统会结束其他线程
}
#include <iostream>
#include "windows.h"
using namespace std;
DWORD WINAPI MyThreadOne(LPVOID lp)
{
int i = (int)lp;
int j = rand()%500;
Sleep((j+500)*2);
if (i == 3)
{
// Sleep(5000);
}
cout<<i<<endl;
return i;
}
int main()
{
int i = 0;
int j = 0; //记录传递参数
int flag = 0;
DWORD dExit = 0;
HANDLE hThread[3];
for (;i<6;i++)
{
if (i>2)
{
flag = WaitForMultipleObjects(3,hThread,FALSE,INFINITE);
flag = flag - WAIT_OBJECT_0;
CloseHandle(hThread[flag]);
}
j = i;
hThread[flag] = CreateThread(NULL,0,MyThreadOne,(LPVOID)j,0,NULL);
cout<<" "<<i<<" "<<flag<<endl;
Sleep(2);
flag++;
}
CloseHandle(hThread[0]);
CloseHandle(hThread[1]);
CloseHandle(hThread[2]);
getchar();
//ExitThread(4); //退出线程,并没有结束其他线程,
return 0; //这里退出时调用了CRT的返回函数,然后系统会结束其他线程
}
本文探讨了并发编程的概念,介绍了多线程技术的基本原理和实现方式,通过实例展示了如何使用多线程提高程序效率。
1665

被折叠的 条评论
为什么被折叠?



