关于 MsgWaitForMultipleObjects 的理解

news2024/11/19 3:34:27

你是否希望有一个 WaitMessageTimeout 函数能帮助你干些特别的活?
很抱歉,没有这东西。

但是,你可以借助另外一个函数 MsgWaitForMultipleObjects 来间接的实现它。怎么做呢?请看下文。

>> 请移步至 topomel.com 以查看图片 <<

为了实现等待一个消息并带有超时机制,我们需要以一种特殊的方式来调用 MsgWaitForMultipleObjects。
具体来说,当我们传递一个希望监听的对象列表,和一个超时时间以及队列状态集合时,MsgWaitForMultipleObjects 会在对象列表中的任意一个对象激发时,或者当一个消息可用时返回。

如果我们不传递任何对象,则唯一剩下的就是等待一个指定的消息了。

除此之外,我们还可以使用 MsgWaitForMultipleObjects 或者它的超集
MsgWaitForMultipleObjectsEx 来实现一个无轮询式 “处理消息时睡眠”的概念。让我们直接看下面的代码:

>> 请移步至 topomel.com 以查看图片 <<

上面这个函数会持续处理消息,并最多持续时间最长为 dwTimeout 毫秒。这个想法的核心只是使用
MsgWaitForMultipleObjects/Ex 函数作为 WaitMessageTimeout 的代替,它会一直处理消息直到达到超时时间。

但是,有很多小细节需要注意。如果你需要复习,我已经将它们链接到讨论特定问题的早期文章中。你可能会觉得 CallMsgFilter 没有什么大作用,但是当你意识到用户可能会在你调用 Sleep 时按下键盘加速器并且你可能希望它通过某人的 TranslateAccelerator 时,你会改变主意。消息筛选器允许你挂钩到模式循环并执行加速器转换。

家庭作业

将此函数扩展为:在提取消息时等待一组句柄至一段指定的超时时间。(你可以在不修改很多代码的情况下完成此任务)

总结

有那么一种感觉不知对不对。
MsgWaitForMultipleObjects 这个函数适用于一些比较复杂的业务场景,里面会涉及:线程同步对象,用户界面,窗口句柄,Windows 消息。
我的拓扑梅尔智慧办公平台 (Topomel Box) 在代码设计不复杂,甚至会特意追求一种更为简单的,老百姓容易的方式来进行架构设计。
为什么?只因我确实愚笨,搞不定太复杂的东西。

“简约而不简单”

最后

Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。
本文来自:《You can call MsgWaitForMultipleObjects with zero handles》

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/641497.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电弧打火机方案,点烟器单片机开发方案

市面上的打火机除了明火之外&#xff0c;还有电热丝、电弧两种类型的点烟器。电热丝在使用过程中会变细并且烧断。宇凡微推出的电弧打火机方案&#xff0c;该点烟器芯片为宇凡微单片机YF系列&#xff0c;电弧点烟器IC性价比高。 一、电弧打火机方案的原理 电弧打火机使用的是电…

量子机器学习Variational Quantum Classifier (VQC)简介

变分量子分类器&#xff08;Variational Quantum Classifier&#xff0c;简称VQC&#xff09;是一种利用量子计算技术进行分类任务的机器学习算法。它属于量子机器学习算法家族&#xff0c;旨在利用量子计算机的计算能力&#xff0c;潜在地提升经典机器学习方法的性能。 VQC的…

【Python】一文带你了解并使用 Json 模块

作者主页&#xff1a;爱笑的男孩。的博客_CSDN博客-深度学习,活动,python领域博主爱笑的男孩。擅长深度学习,活动,python,等方面的知识,爱笑的男孩。关注算法,python,计算机视觉,图像处理,深度学习,pytorch,神经网络,opencv领域.https://blog.csdn.net/Code_and516?typeblog个…

【历史上的今天】6 月 13 日:分组交换网路的“亲子纠纷”;博弈论创始人出生;交互式电视初现雏形

整理 | 王启隆 透过「历史上的今天」&#xff0c;从过去看未来&#xff0c;从现在亦可以改变未来。 今天是 2023 年 6 月 13 日&#xff0c;知名的 ENIAC 建造者约翰莫克利在历史上的这一天参观了 ABC 计算机&#xff0c;与 ABC 的设计者之一阿塔纳索夫会面。这次会面后来牵扯…

java发送QQ邮箱验证码实现登录注册、邮箱验证码防刷校验

文章目录 一&#xff1a;前台功能实现1.1 页面编写1.2 发送验证码——sendEmailCode1.2.1 远程调用发送接口1.2.1 接口防刷校验——60s内只能发送一次 二&#xff1a;获取QQ邮箱授权码2.1 登录QQ邮箱2.2 开启SMTP权限2.2.1 设置2.2.2 账户2.2.3 管理服务2.2.4 生成授权码2.2.5 …

新能源商用车:老玩家、新势力“争先恐后”

现如今&#xff0c;作为重要出行交通工具之一的汽车&#xff0c;已经在人们日常生活中扮演着愈发重要的角色。不仅如此&#xff0c;汽车行业也发生了不小的变化&#xff0c;新能源汽车的热度更是居高不下。除了各路玩家积极布局之外&#xff0c;新能源汽车的销量也是持续走高。…

python---列表和元组(1)

变量就是内存空间,用来表示/存储数据. 如果表示的数据少,直接定义几个变量就行了. 但是有的时候表示的数据比较多,就很麻烦 在python中就有列表和元组,就是这样的机制,可以用一个变量表示很多的数据. 这就类比于其他编程语言中的"数组" 列表和元组大部分的功能是差…

智安网络|深谈网络安全难点的根源和解决之道

随着数字化和网络化的加速发展&#xff0c;人们面临的网络安全问题日益增多。由于网络安全威胁的多样性和复杂性&#xff0c;网络安全防护变得越来越困难。本文将从几个方面来探讨网络安全难点的根源和解决之道。 一. 网络安全威胁的复杂性 网络安全威胁种类繁多&#xff0c;主…

Junit执行器Runner探索之旅 | 京东云技术团队

单元测试是每个程序员必备的技能&#xff0c;而Runner是每个单元测试类必有属性。本文通过解读Junit源码&#xff0c;介绍junit中每个执行器的使用方法&#xff0c;让读者在单元测试时&#xff0c;可以灵活的使用Runner执行器。 一、背景 在今年的敏捷团队建设中&#xff0c;…

07 lvgl-边框样式

void lv_100ask_demo_course_2_1_1(void){ static lv_style_t style;lv_style_init(&style);/*Set a background color and a radius*/lv_style_set_radius(&style, 5); //半径lv_style_set_bg_opa(&style, LV_OPA_COVER); //透明度lv_style_set_bg_color(&st…

xlsx是什么格式的文件?xlsx文件删除了怎么恢复

如果您在工作中不小心删除了重要的xlsx文件怎么办&#xff1f;xlsx文件删除了怎么恢复&#xff1f;本文将介绍如何在不同情况下恢复xlsx文件的实用技巧&#xff0c;帮助您有效的找回文件。 第一部分&#xff1a;xlsx是什么格式的文件 XLSX是一种电子表格文件格式&#xff0c;…

JAVA 实现 Redis 发布订阅

Redis 发布订阅 发布订阅&#xff1a;消息发布者发布消息 和 消息订阅者接收消息&#xff0c;两者之间通过某种媒介联系起来 例如订杂志&#xff0c;当自己订阅了爱格杂志&#xff0c;每个月会发刊一本。到发布的时候派送员将杂志送到自己手上就能看到杂志内容。只有我们订阅了…

为什么美颜插件比传统集成方式更快?

都说云市场插件快&#xff0c;快在哪里呢&#xff1f; 美颜功能是实时互动应用的基础功能&#xff0c;广泛应用在社交、直播、约会、会议等场景&#xff0c;开发者们往往在集成美颜功能时候非常头疼。今天&#xff0c;我们来介绍云市场美颜插件相比传统的裸数据集成方式快在哪…

Unity与原生交互之Unity篇——AndroidStudio导出aar/jar包供Unity使用实现交互全流程(2)

序言:此篇介绍在(1)的基础上引入Unity的API库进行交互,原生调Unity 1.导入Unity库 注意: (1)老版本Unity的classes.jar里包含UnityPlayerActivity API (2)新版本Unity的UnityPlayerActivity API 在UnityEditor安装路径中,需单独导入,后续介绍 1.1导入unity的classes.jar …

Seesion会话超时时间测试-业务安全测试实操(3)

Seesion会话超时时间测试, Cookie仿冒测试, 密文比对认证测试 本地加密传输测试-业务安全测试实操(2)_luozhonghua2000的博客-CSDN博客 测试原理和方法 在用户成功登录系统获得Session认证会话后,该Session认证会话应具有生命周期,即用户在成功登录系统后,如果在固定时间内…

反汇编逆向实战——扫雷辅助制作

一、编程前准备 刚开始是预备知识&#xff0c;如果熟悉的话&#xff0c;可以直接跳到第二部分阅读 在 Windows API 中&#xff0c;SetTimer 函数用于创建一个定时器&#xff0c;并在指定的时间间隔后触发一个定时器消息。以下是关于 SetTimer 函数的介绍&#xff1a; 功能&a…

接口文档设计注意事项

接口名称清晰 一般接口url要求能看得出接口的作用。比如说&#xff0c;查询用户信息&#xff08;queryUserInfo&#xff09;&#xff0c;就是一个不错的接口名称。 接口地址完整 接口的地址&#xff0c;也叫接口的URL地址。即别人调用你的接口&#xff0c;用的是什么URL。比…

【Unity Shader】入门到惊叹(1)基本概念:什么是网格?材质?Shader?

文章目录 一、什么是网格(Mesh)?二、什么是MeshFilter(网格过滤器)?三、什么是MeshRenderer(网格渲染器)?四、什么是材质(Material)?五、什么是Shader(着色器)?一、什么是网格(Mesh)? 如图,模型的三角形面就叫做网格(Mesh),它的本质是一堆顶点数据的规则排…

华为OD机试真题 JavaScript 实现【按身高和体重排队】【2022Q4 100分】,附详细解题思路

一、题目描述 某学校举行运动会&#xff0c;学生们按编号(1、2、3…n)进行标识&#xff0c;现需要按照身高由低到高排列&#xff0c;对身高相同的人&#xff0c;按体重由轻到重排列&#xff1b; 对于身高体重都相同的人&#xff0c;维持原有的编号顺序关系。请输出排列后的学生…

医械围城的觉醒时刻:从“乱世枭雄” 到“剩者为王”

我们现在看到医疗器械行业其实非常的热&#xff0c;不管是投资&#xff0c;还是创业&#xff0c;还有各种跨界进来打劫想分一杯羹的。 但是这个行业是不是一个围城&#xff1f; 真的是进来就可以捡钱吗&#xff1f; 在一片繁荣的景象下&#xff0c;企业的发展存在什么风险&a…