C++博客-星星点灯-最新评论http://www.cppblog.com/hongsion/CommentsRSS.aspxzh-cnSun, 08 Jun 2008 10:19:03 GMTSun, 08 Jun 2008 10:19:03 GMTcnblogsre: 关于windows、线程、消息的一点体会http://www.cppblog.com/hongsion/archive/2009/04/03/40260.html#78886ricoricoFri, 03 Apr 2009 14:40:00 GMThttp://www.cppblog.com/hongsion/archive/2009/04/03/40260.html#78886
所以微软想开发者,老老实实的,你要发消息到另外一个窗口,不用告诉我窗口所在的线程,告诉我窗口句柄就可以了,我(os)晓得该怎么转发,不用你脱了裤子放屁(对我os来说)。

但是,如果程序自己保存得有窗口所在线程的Handle,你postthreadmessage就不消到操作系统查map,岂不是快些?不过感觉这是微软的惯例了,尽量封装多一点,封装死一点,这样系统看起来更复杂和高深。同时这样安装盘可以做的更大些,这样,可以可以消耗更多塑料,拉动GDP,而且是围绕微软的GDP。

rico 2009-04-03 22:40 发表评论
]]>
re: 关于windows、线程、消息的一点体会http://www.cppblog.com/hongsion/archive/2009/04/03/40260.html#78884ricoricoFri, 03 Apr 2009 14:22:00 GMThttp://www.cppblog.com/hongsion/archive/2009/04/03/40260.html#78884
The system creates a thread-specific message queue only when the thread makes its first call to one of the User or Windows Graphics Device Interface (GDI) functions".

非常有意思的地方,也就是说,程序不能显示的为自己的一个线程创建消息队列。更有意思的是一篇文章说,如果你给一个线程postthreadmessage如果失败,那么对不起,等等再试,直到成功,非常滑稽的设计。最想不通的是,其他操作系统上,你爱怎么创建消息队列,你就创建,也没有什么限制,为啥微软的消息队列就必须要受限?

恐怕是早期,微软假设,一个进程一个消息队列足以。后来支持多线程了,又缺省的认为,工作线程,你别关心UI的事情,不给你消息队列。等到最后来,觉得线程消息也不错啊,这样又允许非主线程拥有消息队列,并可以在上面完成UI。总之,感觉在微软看来,消息队列除了干UI的事情,没啥用。你要在进程之间发个自定义消息,那也不是他很期望的事情。

纯属推测。

rico 2009-04-03 22:22 发表评论
]]>