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;
}


函数WaitForSingleObject是对事件进行跟踪,使自身线程阻塞 ,知道调用的线程达到条件返回以后自身才继续向下运行。

如上面代码表示等待hand1和hand2两个线程都运行完成才返回,要不然main的线程继续阻塞。

函数返回值有好多,一开始以为是正确返回就是1拉倒的。具体见下面资料

WAIT_ABANDONED 0x00000080:当hHandle为mutex时,如果拥有mutex的线程在结束时没有释放核心对象会引发此返回值。
WAIT_OBJECT_0 0x00000000 :核心对象已被激活
WAIT_TIMEOUT 0x00000102:等待超时
WAIT_FAILED 0xFFFFFFFF :出现错误,可通过GetLastError得到错误代码


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值