编程思想之消息机制

从一个剧情开始

路遥的《平凡的世界》因为翻拍成电视剧,又再次火起来了!我们就从这里开始吧,其小说是以这样一个场景开头的:
在一个半山腰县立高中的大院坝里,在一个校园内的南墙根下,按班级排起了十几个纵队的年轻男女,各班的值日生正忙碌地给众人分发饭菜…… 菜分为甲、乙、丙三等,甲菜以土豆、白菜、粉条为主,还有可人大肉片,乙菜没有肉,丙菜只有清水煮白萝卜。主食也分为三等:白面馍,玉米面馍,高粱面馍,白、黄、黑分别代表了三种差别,学生们戏称欧洲、亚洲、非洲。每个人的饭菜都是昨天登记好并付了饭票的,在这一长长的队伍中自然以光景较好的富家子弟排在最前,光景一般的随后,而那些家庭贫困少吃缺穿的学生只能在其他学生走后才姗姗来迟……

平凡的世界
平凡的世界

这一活生生的例子虽然看着有些悲凉(排队打饭的情景相信曾经是学生的你一定经历过,可能没这般悲凉而已),却像极了消息机制的原理,也许发明消息机制的灵感就是原来于这样的生活吧!排队的学生就是消息队列,值日生分发饭菜就消息循环并完成消息处理,学生吃饭就类似于事件处理。


什么是消息?

何为消息?消息就是带有某种信息的信号,如你用鼠标点击一个窗口会产生鼠标的消息,键盘输入字符会产生键盘的消息,一个窗口大小的改变也会产生消息。
消息从何而来?根据冯·诺依曼的体系结构计算机有运算器、存储器、控制器和输入设备和输出设备五大部件组成,消息主要来自输入设备,如键盘、鼠标、扫描仪等,也可来自已窗口和操作系统。
消息机制的三大要点:消息队列、消息循环(分发)、消息处理。其结构如下:


这里写图片描述

图 1 :消息机制原理

消息队列就是存放消息的一种队列,具有先进先出的特点。每产生一个消息都会添加进消息队列中,在Window中消息队列是在操作系统中定义的。消息队列就如同一群排队打饭的少男少女,这群人中光景较好的排在前面,光景较差的排在后面,可以理解成是一种优先级队列!要想更多的了解队列的相关知识,可参见队列。
消息循环就是通过循环(如while)不断地从消息队列中取得队首的消息,并将消息分发出去。类似于上面的例子中分发饭菜值日生。
消息处理就是在接收到消息之后根据不同的消息类型做出不同的处理。上面例子中值日生根据学生不同类型的饭票给他们不同等级的饭菜就是消息处理,学生手中的饭票就是消息所携带的信息。
事件是根据接收到的消息的具体信息做出的特定的处理,放在代码中是事件响应函数。上面的例子中学生拿到饭菜后吃饭就是具体的事件。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值