#include <iostream>
#include <windows.h>
using namespace std;
DWORD WINAPI ThreadFunc(LPVOID lpParameter) //C++里面线程的创建,前面为返回值类型 LPVOID为输入类型
{
int i = (int)lpParameter;
while(i--)
{
cout << "打印倒数第" << i << "次." << endl;
if(i == 89)
{
ExitThread(); //退出线程
}
}
return 1;
}
int main()
{
DWORD threadfd;
HANDLE thread;
thread = CreateThread(NULL, 0, ThreadFunc,(LPVOID)5, 0, &threadfd); //第二空位分配堆栈,0则1MB 第三个既是线程运行的函数 (LPVOID)强制类型转换,不写会报错
if (thread == false) //第四个量CREATE_SUSPENDED,则是创建及挂起,等待ResumeThread 第五个是新线程的ID
{
cout << "线程创建失败." << endl;
}
ResumeThread(thread); //取消挂起
Sleep(5000);
SuspendThread(thread); //挂起,与上面的CREATE_SUSPENDED等效果
Sleep(5000);
ResumeThread(thread);
Sleep(5000);
SuspendThread(thread);
Sleep(5000);
ResumeThread(thread);
do{
GetExitCodeThread(thread, &threadfd2); //检测线程是否结束,根据返回值判断
} while (threadfd2 == STILL_ACTIVE);
//sleep(20);
DWORD ret;
ret = WaitForSingleObject(thread, INFINITE); //等待线程,在规定时间内 此处INFINITE为无线等待
if (ret == WAIT_FAILED)
{
cout << "等待失败." << endl;
}
else if (ret == WAIT_OBJECT_0)
{
cout << "等待成功." << endl;
}
else if (ret == WAIT_TIMEOUT)
{
cout << "等待超时." << endl;
}
return 0;
}
#include <windows.h>
using namespace std;
DWORD WINAPI ThreadFunc(LPVOID lpParameter) //C++里面线程的创建,前面为返回值类型 LPVOID为输入类型
{
int i = (int)lpParameter;
while(i--)
{
cout << "打印倒数第" << i << "次." << endl;
if(i == 89)
{
ExitThread(); //退出线程
}
}
return 1;
}
int main()
{
DWORD threadfd;
HANDLE thread;
thread = CreateThread(NULL, 0, ThreadFunc,(LPVOID)5, 0, &threadfd); //第二空位分配堆栈,0则1MB 第三个既是线程运行的函数 (LPVOID)强制类型转换,不写会报错
if (thread == false) //第四个量CREATE_SUSPENDED,则是创建及挂起,等待ResumeThread 第五个是新线程的ID
{
cout << "线程创建失败." << endl;
}
ResumeThread(thread); //取消挂起
Sleep(5000);
SuspendThread(thread); //挂起,与上面的CREATE_SUSPENDED等效果
Sleep(5000);
ResumeThread(thread);
Sleep(5000);
SuspendThread(thread);
Sleep(5000);
ResumeThread(thread);
do{
GetExitCodeThread(thread, &threadfd2); //检测线程是否结束,根据返回值判断
} while (threadfd2 == STILL_ACTIVE);
//sleep(20);
DWORD ret;
ret = WaitForSingleObject(thread, INFINITE); //等待线程,在规定时间内 此处INFINITE为无线等待
if (ret == WAIT_FAILED)
{
cout << "等待失败." << endl;
}
else if (ret == WAIT_OBJECT_0)
{
cout << "等待成功." << endl;
}
else if (ret == WAIT_TIMEOUT)
{
cout << "等待超时." << endl;
}
return 0;
}