导航
  • 主页
  • VC综合技术
  • 互联网技术
  • MFC AppLauncher
  • .NET 技术
  • 界面
  • 进程
  • 算法
  • 硬件/系统
  • 数据库
  • VC++技术资源

关于消息队列的一些疑惑,清楚的XDJM进

cust008 2010-07-19 06:15:34
1》在windows中一个有几个系统消息队列?以下是查到的资料
A答案:
系统消息队列(System Message Queue)

这是一个系统唯一的Queue,设备驱动(mouse, keyboard)会把操作输入转化成消息存在系统队列中,然后系统会把此消息放到目标窗口所在的线程的消息队列(thread-specific message queue)中等待处理
B答案:
对于硬件消息,Windows系统启动时会运行一个叫Raw Input Thread的线程,简称RIT。这个线程负责处理System Hardware Input Queue(SHIQ)里面的消息,这些消息由硬件驱动发送。RIT负责把SHIQ里的消息分发到线程的消息队列里面,那RIT是如何知道该发给谁呢?如果是鼠标事件,那就看鼠标指针所指的窗口属于哪个线程,如果是键盘那就看哪个窗口当前是激活的。一些特殊的按键会有所不同,比如 Alt+Tab,Ctrl+Alt+Del等,RIT能保证他们不受当前线程的影响而死锁。RIT只能同时和一个线程关联起来。

有可能,Windows系统还维护了除SHIQ外地其他队列,分发给线程的队列,或者直接发给窗口的处理函


我的疑问:1》SHIQ 是不是 System Message Queue呢?
2》Windows系统到底有几个系统队列 ? 有哪些权威的书上有明确的关于这些的说明,比如<<windows 核心编程>> 有 吗?我看书比较粗糙麻烦大家了
3》所有的消息路由顺序都是先到系统队列,处理后在发到各个对应的线程的消息队列的吗?这个结论又是从哪来的
呢?





...全文
127 点赞 收藏 6
写回复
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wgggfiy 2010-08-08
应该是只有一个系统的消息队列,然后OS再将消息交给不同的应用程序来处理
回复
cust008 2010-07-20
大家帮帮忙吧
回复
cust008 2010-07-20
自己顶,还有知道的吗
回复
cust008 2010-07-20
自己顶,还有知道的吗
回复
苏克贝塔03 2010-07-19
3》所有的消息路由顺序都是先到系统队列,处理后在发到各个对应的线程的消息队列的吗?这个结论又是从哪来的
呢?
应该是应用程序吧。。
我记得也是这样的,只有一个系统队列。。。
回复
苏克贝塔03 2010-07-19
3》所有的消息路由顺序都是先到系统队列,处理后在发到各个对应的线程的消息队列的吗?这个结论又是从哪来的
呢?
应该是应用程序吧。。
我记得也是这样的,只有一个系统队列。。。
回复
发动态
发帖子
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……