青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 4, comments - 6, trackbacks - 0, articles - 0
  C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

以下內(nèi)容完全把window 操作系統(tǒng)當(dāng)作一個黑盒,因此所有內(nèi)容只能作為對其內(nèi)部的一個猜測。

1. windows操作系統(tǒng)內(nèi)部在創(chuàng)建一個線程的時候,會自動為它創(chuàng)建一個消息隊列。

2.每當(dāng)一個線程創(chuàng)建一個窗口的時候,操作系統(tǒng)內(nèi)部都會把該窗口的Handle和線程相關(guān)聯(lián)。很有可能在操作系統(tǒng)內(nèi)部會維護一個窗口handle到線程的map. 還有一種可能就是窗口的成員變量里面有一個指針,指向創(chuàng)建它的線程。

3.窗口本身并沒有消息隊列,所有發(fā)到窗口的消息,都會自動被發(fā)到創(chuàng)建該窗口的線程的消息隊列中。

4.每個線程只能處理自己線程隊列里面的消息,不能處理其他線程消息隊列里面的消息。
所以PeekMessage(LPMSG lpMsg, HWND hWnd, UINT,UINT,UINT)函數(shù)中,如果hWnd不是本線程創(chuàng)建的窗口,則該函數(shù)調(diào)用失敗。

5.由于在線程消息隊列里面的消息會包含有窗口句柄,所以PeekMessage可以專門處理某個特殊窗口的消息。


6. 曾經(jīng)有疑問線程是不是只有創(chuàng)建了窗口才具有消息隊列,但又覺得應(yīng)該不是這樣,因為在windows的API里面有個函數(shù)叫PostThreadMessage,可以直接把消息投遞到線程的消息隊列里面,而不需要任何窗口句柄。后來在MSDN里面有這么一段描述,覺得解釋的很詳細(xì):
“The system maintains a single system message queue and one thread-specific message queue for each graphical user interface (GUI) thread. To avoid the overhead of creating a message queue for non–GUI threads, all threads are created initially without a message queue. 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".
 這里唯一的疑問我想應(yīng)該是”makes its first call to one of the User or Windows Graphics Device Interface (GDI) functions", 這句話的意思是不是等同于創(chuàng)建一個窗口呢?

Feedback

# re: 關(guān)于windows、線程、消息的一點體會  回復(fù)  更多評論   

2009-04-03 22:22 by rico
有見地!

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".

非常有意思的地方,也就是說,程序不能顯示的為自己的一個線程創(chuàng)建消息隊列。更有意思的是一篇文章說,如果你給一個線程postthreadmessage如果失敗,那么對不起,等等再試,直到成功,非?;脑O(shè)計。最想不通的是,其他操作系統(tǒng)上,你愛怎么創(chuàng)建消息隊列,你就創(chuàng)建,也沒有什么限制,為啥微軟的消息隊列就必須要受限?

恐怕是早期,微軟假設(shè),一個進程一個消息隊列足以。后來支持多線程了,又缺省的認(rèn)為,工作線程,你別關(guān)心UI的事情,不給你消息隊列。等到最后來,覺得線程消息也不錯啊,這樣又允許非主線程擁有消息隊列,并可以在上面完成UI。總之,感覺在微軟看來,消息隊列除了干UI的事情,沒啥用。你要在進程之間發(fā)個自定義消息,那也不是他很期望的事情。

純屬推測。

# re: 關(guān)于windows、線程、消息的一點體會  回復(fù)  更多評論   

2009-04-03 22:40 by rico
另外,PostThreadMessage,都不可以帶窗口Handle的喔。當(dāng)然,如果是發(fā)給窗體的,微軟認(rèn)為,postmessage就可以了。這就讓人納悶了,我消息不是直接發(fā)給窗體的,而是直接發(fā)給一個線程的,雖然那個窗體屬于某個線程,并最終會被dispatch到對應(yīng)的窗口,因為操作系統(tǒng)自己也登記了窗口屬于那個線程(博主的推測)。

所以微軟想開發(fā)者,老老實實的,你要發(fā)消息到另外一個窗口,不用告訴我窗口所在的線程,告訴我窗口句柄就可以了,我(os)曉得該怎么轉(zhuǎn)發(fā),不用你脫了褲子放屁(對我os來說)。

但是,如果程序自己保存得有窗口所在線程的Handle,你postthreadmessage就不消到操作系統(tǒng)查map,豈不是快些?不過感覺這是微軟的慣例了,盡量封裝多一點,封裝死一點,這樣系統(tǒng)看起來更復(fù)雜和高深。同時這樣安裝盤可以做的更大些,這樣,可以可以消耗更多塑料,拉動GDP,而且是圍繞微軟的GDP。

# re: 關(guān)于windows、線程、消息的一點體會  回復(fù)  更多評論   

2009-05-22 11:47 by 飛鴿傳書
有點難理解。

# re: 關(guān)于windows、線程、消息的一點體會  回復(fù)  更多評論   

2009-05-22 11:53 by 飛鴿傳書
哈哈,表達得太好了。@rico

# re: 關(guān)于windows、線程、消息的一點體會[未登錄]  回復(fù)  更多評論   

2012-01-16 17:39 by 葡萄
1. windows操作系統(tǒng)內(nèi)部在創(chuàng)建一個線程的時候,會自動為它創(chuàng)建一個消息隊列。

這個說的不對。在線程創(chuàng)建的時候,所有線程都是沒有消息隊列的。
只有這個線程中顯式的調(diào)用GUI相關(guān)函數(shù)(例如創(chuàng)建窗口)時或者PostThreadMessage時,才會給這個線程創(chuàng)建消息隊列。

只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            99天天综合性| 羞羞答答国产精品www一本| 亚洲精品九九| 欧美小视频在线| 麻豆久久精品| 制服丝袜激情欧洲亚洲| 亚洲电影免费| 国产精品乱码久久久久久| 亚洲国产美女精品久久久久∴| 亚洲天堂黄色| 一个色综合av| 久久高清免费观看| 香蕉久久夜色精品| 中文精品视频一区二区在线观看| 久久先锋资源| 老鸭窝毛片一区二区三区 | 亚洲欧美日韩高清| 一本大道久久精品懂色aⅴ| 久久青草久久| 麻豆成人在线播放| 国外成人在线视频网站| 亚洲欧美日韩电影| 欧美综合激情网| 国产欧美一区二区色老头 | 久久婷婷成人综合色| 国产亚洲福利| 欧美一区二区三区在线视频 | 欧美一级免费视频| 欧美一区二区三区婷婷月色 | 亚洲人成人一区二区三区| 在线国产日韩| 久久一区二区三区国产精品 | 亚洲欧美在线播放| 性刺激综合网| 国产日韩欧美电影在线观看| 亚洲永久在线| 久久久久九九九| 精品999久久久| 久久亚洲精品视频| 欧美激情在线观看| 这里是久久伊人| 国产精品久久久久9999吃药| 欧美一区二区三区在| 狠狠色狠狠色综合日日五| 久久国产精品久久久久久久久久| 久久漫画官网| 日韩亚洲国产欧美| 国产精品女主播一区二区三区| 午夜精品在线看| 欧美大片一区二区| 亚洲激情一区二区| 亚洲视频精品在线| 国产伦精品一区二区三区高清| 欧美在线日韩| 亚洲黄网站黄| 欧美一区二区福利在线| 永久免费精品影视网站| 欧美精品尤物在线| 亚洲欧美日韩在线播放| 欧美成人一品| 香蕉久久a毛片| 91久久极品少妇xxxxⅹ软件| 欧美性色视频在线| 亚洲午夜精品一区二区| 亚洲一区二区三区在线看| 久久久久五月天| 国产精品高潮呻吟视频| 久久精品视频亚洲| 亚洲最新在线视频| 美女福利精品视频| 亚洲一区二区精品| 亚洲高清影视| 国产欧美日韩视频在线观看 | 亚洲激情二区| 欧美在线一区二区| 亚洲精品社区| 狠狠色丁香久久婷婷综合丁香| 欧美日韩大片| 久久综合九色九九| 午夜亚洲视频| 亚洲视频大全| 亚洲第一在线视频| 久久久欧美一区二区| 亚洲一区一卡| 亚洲毛片av| 亚洲电影自拍| 极品裸体白嫩激情啪啪国产精品| 国产精品成人一区二区艾草| 欧美jizz19性欧美| 久久久999成人| 久久aⅴ国产紧身牛仔裤| 亚洲免费av电影| 亚洲黄色av一区| 狠狠爱www人成狠狠爱综合网| 欧美色中文字幕| 亚洲国产成人91精品| 欧美精品久久久久久久久老牛影院| 久久国产精品黑丝| 国产热re99久久6国产精品| 欧美日本簧片| 欧美激情免费在线| 欧美阿v一级看视频| 老鸭窝毛片一区二区三区| 久久精品二区三区| 久久大香伊蕉在人线观看热2| 亚洲自拍啪啪| 欧美亚洲三区| 欧美一区二区在线播放| 午夜久久电影网| 久久精品一区二区三区不卡牛牛| 午夜激情亚洲| 久久9热精品视频| 久久精品二区亚洲w码| 欧美中文在线观看国产| 久久狠狠婷婷| 乱码第一页成人| 欧美激情视频一区二区三区免费| 亚洲精品韩国| 夜夜嗨av一区二区三区免费区| 日韩亚洲精品电影| 亚洲网站在线播放| 欧美一区国产一区| 久久乐国产精品| 欧美+亚洲+精品+三区| 欧美顶级艳妇交换群宴| 久久午夜精品一区二区| 国产精品99久久久久久人| av成人免费在线观看| 亚洲欧美精品suv| 欧美资源在线| 欧美大片在线观看一区| 99re热这里只有精品免费视频| 一区二区三区四区国产| 女生裸体视频一区二区三区| 裸体丰满少妇做受久久99精品| 欧美精品一区三区| 国产精品欧美一区喷水 | 欧美激情视频一区二区三区免费 | 中国亚洲黄色| 欧美一区二区三区四区在线| 欧美肥婆在线| 亚洲嫩草精品久久| 久久精品一区二区国产| 欧美激情久久久久| 亚洲视频在线观看一区| 久久精品视频免费播放| 欧美日韩的一区二区| 国产欧美一区二区精品婷婷| 亚洲高清久久网| 午夜激情一区| 欧美视频一区在线观看| 国产精品福利网站| 一区二区三区在线免费视频| 在线亚洲成人| 欧美xx视频| 亚洲永久免费视频| 欧美激情中文不卡| 国模精品一区二区三区色天香| 一本色道精品久久一区二区三区| 久久爱另类一区二区小说| 亚洲激情二区| 久久久亚洲成人| 国产精品一二三四区| 亚洲精品一区二区三区蜜桃久| 久久成人精品无人区| 亚洲人屁股眼子交8| 欧美在线免费观看亚洲| 国产精品嫩草99a| 中文国产成人精品久久一| 欧美不卡一卡二卡免费版| 欧美日本精品| 久久久久久9999| 国产精品视频一区二区三区| 亚洲精品视频免费在线观看| 久久久欧美一区二区| 欧美一区二区三区视频在线 | 欧美中文在线视频| 国产精品日韩欧美| 亚洲福利视频一区二区| 久久精品首页| 亚洲欧美中文在线视频| 国产精品h在线观看| 一区二区福利| 最新国产精品拍自在线播放| 老**午夜毛片一区二区三区| 国产一区二区三区免费不卡| 性高湖久久久久久久久| 亚洲视频久久| 国产精品www994| 亚洲影院色在线观看免费| 亚洲精品国产系列| 欧美精品一区二区在线播放| 亚洲九九精品| 亚洲欧洲综合另类| 欧美va亚洲va香蕉在线| 亚洲经典一区| 亚洲精品国久久99热| 欧美日韩直播| 午夜欧美视频| 欧美亚洲日本国产|