本文主要是介绍kinect学习笔记五(线程并发),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
因为想同时处理左右手,想采用线程并发来同时处理,提高处理速度,找了些材料,贴到这里以供以后使用
#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得到错误代码
这篇关于kinect学习笔记五(线程并发)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!