kinect学习笔记五(线程并发)

2024-04-09 12:18

本文主要是介绍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得到错误代码


这篇关于kinect学习笔记五(线程并发)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/888133

相关文章

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

Java并发编程必备之Synchronized关键字深入解析

《Java并发编程必备之Synchronized关键字深入解析》本文我们深入探索了Java中的Synchronized关键字,包括其互斥性和可重入性的特性,文章详细介绍了Synchronized的三种... 目录一、前言二、Synchronized关键字2.1 Synchronized的特性1. 互斥2.

Spring Boot3虚拟线程的使用步骤详解

《SpringBoot3虚拟线程的使用步骤详解》虚拟线程是Java19中引入的一个新特性,旨在通过简化线程管理来提升应用程序的并发性能,:本文主要介绍SpringBoot3虚拟线程的使用步骤,... 目录问题根源分析解决方案验证验证实验实验1:未启用keep-alive实验2:启用keep-alive扩展建

Python异步编程中asyncio.gather的并发控制详解

《Python异步编程中asyncio.gather的并发控制详解》在Python异步编程生态中,asyncio.gather是并发任务调度的核心工具,本文将通过实际场景和代码示例,展示如何结合信号量... 目录一、asyncio.gather的原始行为解析二、信号量控制法:给并发装上"节流阀"三、进阶控制

Redis中高并发读写性能的深度解析与优化

《Redis中高并发读写性能的深度解析与优化》Redis作为一款高性能的内存数据库,广泛应用于缓存、消息队列、实时统计等场景,本文将深入探讨Redis的读写并发能力,感兴趣的小伙伴可以了解下... 目录引言一、Redis 并发能力概述1.1 Redis 的读写性能1.2 影响 Redis 并发能力的因素二、

Java终止正在运行的线程的三种方法

《Java终止正在运行的线程的三种方法》停止一个线程意味着在任务处理完任务之前停掉正在做的操作,也就是放弃当前的操作,停止一个线程可以用Thread.stop()方法,但最好不要用它,本文给大家介绍了... 目录前言1. 停止不了的线程2. 判断线程是否停止状态3. 能停止的线程–异常法4. 在沉睡中停止5

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

Java捕获ThreadPoolExecutor内部线程异常的四种方法

《Java捕获ThreadPoolExecutor内部线程异常的四种方法》这篇文章主要为大家详细介绍了Java捕获ThreadPoolExecutor内部线程异常的四种方法,文中的示例代码讲解详细,感... 目录方案 1方案 2方案 3方案 4结论方案 1使用 execute + try-catch 记录

Nginx实现高并发的项目实践

《Nginx实现高并发的项目实践》本文主要介绍了Nginx实现高并发的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录使用最新稳定版本的Nginx合理配置工作进程(workers)配置工作进程连接数(worker_co

Spring Boot 中正确地在异步线程中使用 HttpServletRequest的方法

《SpringBoot中正确地在异步线程中使用HttpServletRequest的方法》文章讨论了在SpringBoot中如何在异步线程中正确使用HttpServletRequest的问题,... 目录前言一、问题的来源:为什么异步线程中无法访问 HttpServletRequest?1. 请求上下文与线