Windows为什么使用广播机制更新信息?

news2025/1/11 17:13:57

很多 Windows 信息通知机制是基于广播消息,例如,DDE,WM_FONTCHANGE 消息和系统设置的修改等。
当我们知道,消息的广播可能导致系统由于某个窗口停止处理消息而导致整个系统停止时,为什么我们还是使用广播呢?

因为在16位 Windows 中,你没有这个问题。

回想一下,16位 Windows 是协作式多任务处理的。当一个程序获得对 CPU 的控制权时,它可以做任何它想做的事情,因为它知道,在它通过调用 GetMessage 或PeekMessage 等函数明确产生控制权之前,没有其他程序可以运行。

当然,这样做的缺点是,单个挂起的程序导致整个系统挂起,因为它没有释放CPU。
然而,好处是,如果你的程序正在运行,那么你预先就可以知道系统中没有挂起的程序。你怎么知道?因为如果有一个挂起的程序,它将一直运行,你的程序根本没有机会运行。

如果只有一把锁,而你拥有它,那么你就知道没有其他人在霸占它。因此,在 16 位 Windows 中使用广播消息是完全安全的。你不必担心无响应的程序,因为你有证据证明没有任何程序。

当然,当切换到抢占性多任务系统时,这个假设不再适用,但那时为时已晚。

基于广播的模型已经在使用中,因此出于兼容性原因必须保留。(例如,如果 Lotus 1-2-3 停止在 Windows NT 上工作,因为不再支持 DDE 广播,那就太糟糕了。如果Windows NT 团队尝试过这种策略,就没有人会愿意升级,Windows NT 也不会幸存下来制作它的第二个版本。)

另一方面,考虑到 DDE 广播所涉及的风险,最好将程序设计为不使用动态数据交换作为数据通信机制,从而避免消息广播的陷阱。所以,开发者还是不要在这个议题上自寻烦恼了。

总结

又一个为了兼容性不得不背负的包袱。
为什么兼容性如此重要?

> 你的用户可能没有更新系统,或者他正在使用非常老的系统。
> 你的用户使用了最新的操作系统,但是还是使用很老的应用程序。
> 你的用户使用了最新的操作系统,但他使用的设备还是非常老的。

不能因为更新了一次系统版本,就导致了某个功能不可用。
这就是原因。

最后

Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。
本文来自:《Why are there broadcast-based mechanisms in Windows?》

 

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

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

相关文章

【解决】VSCode编写C++自定义头文件undefined reference异常问题

最近在使用VSCode编写C程序过程中,自定义一个 *.h 文件,其中包含了函数声明,在主函数中引入头文件后,调用头文件对应C文件中的方法,出现了undefined reference问题,这个主要是配置没有正确造成的&#xff0…

Git——分支(详细解释)

目录 一、概念 1.1 服务器运行模式 1.2 分支概念 1.3 分支的好处 二、分支相关操作 2.1 分支操作 2.2 查看当前分支 2.3 创建分支 2.4 切换分支 2.4.1 切换分支 2.4.2 修改代码并提交(完整过程) 三、合并分支 3.1 正常合并 3.2 冲突合并&#xff…

DGL学习笔记——第一章 图

提示:DGL用户指南学习中 文章目录一、关于图的基本概念?二、图、节点和边三、节点和边的特征四、从外部源创建图1、从Scipy稀疏矩阵中构建图示例2、从networkx中构建图示例3、从csv中构建图结构总结一、关于图的基本概念? 图是用以表示实体及…

【推荐系统学习笔记】-- 1、推荐系统架构

根本解决的问题:在信息过载的情况下,用户如何高效获取感兴趣的信息。 1 逻辑架构 推荐系统要处理的问题就可以被形式化地定义为:对于某个用户U(User),在特定场景C(Context)下&…

区块链 - 各个国家Web3的现状与趋势

​潜力博主推荐,点上面关注博主↑↑↑ 2022年,元宇宙、NFT 、GameFi、DAO、DeFi 等 Web3 时代的新生事物,正在彻底改写传统商业模式,重塑全球数字商业的版图,一个全新的数字时代正在开启。 美国、欧洲官方开始在 Web…

【构建ML驱动的应用程序】第 4 章 :获取初始数据集

🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃 🎁欢迎各位→点赞…

C语言——指针初阶详解

🐒博客名:平凡的小苏 📚学习格言:别人可以拷贝我的模式,但不能拷贝我不断往前的激情 目录 1. 指针是什么 2. 指针和指针类型 2.1指针类型的第一个意义 2.2指针类型的第二个意义 3. 野指针 3.1 野指针成因 3.2 如何…

零基础自学javase黑马课程第十六天

零基础自学javase黑马课程第十六天 ✨欢迎关注🖱点赞🎀收藏⭐留言✒ 🔮本文由京与旧铺原创,csdn首发! 😘系列专栏:java学习 💻首发时间:🎞2022年11月21日&…

三菱FX3U——ST编程点动与自锁

通过赋值 : 操作符,可以控制元件的状态; Y0:1,使Y0得电, Y0:0,使Y0失电; Y0:TRUE,使Y0得电, Y0:FALSE,使Y0失电; Y2:M0,通过M0的状态来控制Y2; NOT 取反操作, 状态取反&#xff…

活动现场大屏幕互动系统(微信墙)修复版完美PHP源码,带完整素材包和详细使用文档

源码收集于网络,觉得不错,2022-11-18亲测了源码,顺手修复了原来的几处bug。网上的这个源码有个重大bug,就是后台系统配音没法上传音乐文件。我理了一下代码,修复了这个问题,现在后台可以分别给每个模块上传…

CTFHub技能树 Web-文件上传详解

文章目录0x01 无验证0x02 前端验证0x03 .htaccess0x04 MIME绕过0x05 00截断0x06 双写后缀0x07 文件头检查0x08 其他摘抄0x01 无验证 介绍&#xff1a;直接上传后缀是php的文件即可 文件上传 <?php eval($_POST[777]);?> 进行连接 查找flag 0x02 前端验证 介…

智慧住建解决方案-最新全套文件

智慧住建解决方案-最新全套文件一、建设背景目前智慧住建的信息化现状&#xff1a;1、系统重叠建设&#xff0c;标准规范不统一2、信息应用水平不均衡&#xff0c;资源共享待提升3、应用系统众多&#xff0c;用户操作体验不佳4、原有架构难以适应“互联网”的新要求二、总体设计…

计算机中的第三个伟大发明

本节我们学习了控制计算机跳转指令的第三个发明的由来&#xff0c;以及清除指令。并且展示了计算机的整体控制部分的布线图。 第三个发明 对于跳转指令&#xff0c;有时它会跳转&#xff0c;有时不会。跳或不跳只是两种可能性&#xff0c;所以只需要一个bit就可以确定哪一种会…

【Kubernetes快速实战】

K8S官网文档&#xff1a;https://kubernetes.io/zh/docs/home/ 文章目录前言一、K8S核心特性二、K8S集群安装1.安装K8S集群1、关闭防火墙2、关闭 selinux3、关闭 swap4、给三台机器分别设置主机名5、在 k8s‐master机器添加hosts&#xff0c;执行如下命令&#xff0c;ip需要修改…

全球最受欢迎的「数字游民」城市竟然是它?

相信你已经或多或少听说过「数字游民」这个词汇了。 「数字游民」译自英文词组Digital Nomad&#xff0c;是指那些没有办公室等固定工作场所&#xff0c;利用互联网从事远程工作&#xff0c;实现地域和时间的相对自由&#xff0c;在全球范围内移动生活的人群。 想想看&#x…

STM32实战总结:HAL之电机

电机基础知识参考&#xff1a; 51单片机外设篇&#xff1a;电机_路溪非溪的博客-CSDN博客 无刷电机和有刷电机 先详细了解有刷电机&#xff1a; 带你了解&#xff08;有刷&#xff09;电机工作原理_哔哩哔哩_bilibili 再详细了解无刷电机&#xff1a; 无刷直流电机工作原理_哔哩…

MySQL在centos上的安装

去mysql官网下载mysql 通过mysql官网的download界面&#xff0c;找到community server&#xff0c;然后选择对应linux版本下载对应的安装包 这里直接上链接 https://downloads.mysql.com/archives/community/ 可以通过cat /etc/centos-release命令找到当前centos对应的版本 下…

[附源码]java毕业设计小区供暖收费管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

重磅上市《精通Neo4j》

重磅上市《精通Neo4j》重磅上市《精通Neo4j》一、写在前面的话二、主要内容三、更多介绍Here’s the table of contents:重磅上市《精通Neo4j》 《精通Neo4j》是继《Neo4j权威指南》之后第二本由中国人原创的图数据库领域专业书籍。由清华大学出版社于2022年11月出版&#xff0…

【菜菜的sklearn课堂笔记】逻辑回归与评分卡-步长的进一步理解和max_iter

视频作者&#xff1a;菜菜TsaiTsai 链接&#xff1a;【技术干货】菜菜的机器学习sklearn【全85集】Python进阶_哔哩哔哩_bilibili 既然参数迭代是靠梯度向量的大小d步长α梯度向量的大小d \times步长\alpha梯度向量的大小d步长α来实现的&#xff0c;而J(θ)J(\theta)J(θ)的降…