因为想同时处理左右手,想采用线程并发来同时处理,提高处理速度,找了些材料,贴到这里以供以后使用
#include <windows.h>
#include <iostream>
using namespace std;
DWORD WINAPI processRightHand(LPVOID param); //右手处理线程
DWORD WINAPI processLeftHand(LPVOID param);//左手处理线程
int main()
{
HANDLE hand1 = CreateThread(NULL, 0, processRightHand, 0, CREATE_SUSPENDED, NULL);//创建线程并挂起
HANDLE hand2 = CreateThread(NULL, 0, processLeftHand, 0, CREATE_SUSPENDED, NULL);
ResumeThread(hand1);//激活线程
ResumeThread(hand2);
if((WaitForSingleObject(hand1, INFINITE)==WAIT_OBJECT_0 ) && (WaitForSingleObject(hand2, INFINITE)==WAIT_OBJECT_0 ))//等待线程结束
{
cout << "执行完毕" << endl;
}
cout << "ok" << endl;
int w;
cin>>w;
return 0;
}
DWORD WINAPI processRightHand(LPVOID param)
{
cout << "no1" << endl;
Sleep(1000);
cout << "no1over" << endl;
return 0;
}
DWORD WINAPI processLeftHand(LPVOID param)
{
cout << "no2" << endl;
Sleep(5000);
cout << "no2over" << endl;
return 0;
}
如上面代码表示等待hand1和hand2两个线程都运行完成才返回,要不然main的线程继续阻塞。
函数返回值有好多,一开始以为是正确返回就是1拉倒的。具体见下面资料
WAIT_ABANDONED 0x00000080:当hHandle为mutex时,如果拥有mutex的线程在结束时没有释放核心对象会引发此返回值。
WAIT_OBJECT_0 0x00000000 :核心对象已被激活
WAIT_TIMEOUT 0x00000102:等待超时
WAIT_FAILED 0xFFFFFFFF :出现错误,可通过GetLastError得到错误代码