因为想同时处理左右手,想采用线程并发来同时处理,提高处理速度,找了些材料,贴到这里以供以后使用
#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得到错误代码