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

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

關于windows、線程、消息的一點體會

Posted on 2008-01-02 19:35 hongsion 閱讀(2094) 評論(5)  編輯 收藏 引用 所屬分類: Windows

以下內容完全把window 操作系統當作一個黑盒,因此所有內容只能作為對其內部的一個猜測。

1. windows操作系統內部在創建一個線程的時候,會自動為它創建一個消息隊列。

2.每當一個線程創建一個窗口的時候,操作系統內部都會把該窗口的Handle和線程相關聯。很有可能在操作系統內部會維護一個窗口handle到線程的map. 還有一種可能就是窗口的成員變量里面有一個指針,指向創建它的線程。

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

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

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


6. 曾經有疑問線程是不是只有創建了窗口才具有消息隊列,但又覺得應該不是這樣,因為在windows的API里面有個函數叫PostThreadMessage,可以直接把消息投遞到線程的消息隊列里面,而不需要任何窗口句柄。后來在MSDN里面有這么一段描述,覺得解釋的很詳細:
“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".
 這里唯一的疑問我想應該是”makes its first call to one of the User or Windows Graphics Device Interface (GDI) functions", 這句話的意思是不是等同于創建一個窗口呢?

Feedback

# re: 關于windows、線程、消息的一點體會  回復  更多評論   

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

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

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

純屬推測。

# re: 關于windows、線程、消息的一點體會  回復  更多評論   

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

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

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

# re: 關于windows、線程、消息的一點體會  回復  更多評論   

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

# re: 關于windows、線程、消息的一點體會  回復  更多評論   

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

# re: 關于windows、線程、消息的一點體會[未登錄]  回復  更多評論   

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

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

只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   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>
            欧美日韩国产色视频| 国产精品午夜国产小视频| 亚洲第一区在线观看| 久久夜色精品国产欧美乱| 香蕉成人啪国产精品视频综合网| 国产精品一区二区视频| 亚洲欧美久久久| 羞羞漫画18久久大片| 国产午夜亚洲精品理论片色戒| 久久激情综合网| 久久都是精品| 亚洲国产天堂久久国产91| 91久久嫩草影院一区二区| 欧美精彩视频一区二区三区| 一区二区久久| 午夜在线视频观看日韩17c| 激情欧美亚洲| 亚洲人成网站777色婷婷| 欧美三级资源在线| 久久精品日产第一区二区三区| 久久全国免费视频| 在线亚洲一区二区| 性做久久久久久久久| 亚洲国产精品女人久久久| 亚洲日产国产精品| 国产日韩一区| 亚洲国产成人在线| 国产欧美一区二区精品秋霞影院| 蜜臀av在线播放一区二区三区 | 久久精品亚洲热| 欧美国产高潮xxxx1819| 亚洲影视在线播放| 六十路精品视频| 欧美一级久久久久久久大片| 久久亚洲精选| 欧美一区二区精品| 欧美日韩国产另类不卡| 欧美自拍丝袜亚洲| 欧美日韩国产在线播放网站| 久久精品中文字幕免费mv| 欧美人与禽猛交乱配| 久久久亚洲影院你懂的| 欧美视频在线观看| 欧美黑人国产人伦爽爽爽| 国产免费一区二区三区香蕉精| 欧美激情第二页| 国产一区二三区| 亚洲天堂成人| 一区二区欧美日韩| 美女网站在线免费欧美精品| 欧美中文字幕| 国产精品国产亚洲精品看不卡15| 欧美高清视频在线播放| 国产亚洲毛片| 亚洲在线一区二区三区| 中日韩高清电影网| 欧美精品一区二区精品网| 欧美成人亚洲| 精品成人一区二区三区四区| 午夜精品久久久久久久蜜桃app| 一区二区三区高清不卡| 欧美国产丝袜视频| 亚洲国产高清在线观看视频| 悠悠资源网亚洲青| 久久久青草青青国产亚洲免观| 久久精品99无色码中文字幕| 国产精品入口麻豆原神| 中日韩美女免费视频网址在线观看| 亚洲精品免费电影| 欧美精品午夜| 日韩午夜电影| 亚洲一区二区视频在线观看| 欧美精品久久久久久久| 亚洲精选视频免费看| 一本色道久久综合狠狠躁篇的优点| 老司机精品导航| 欧美黄色网络| 亚洲人成在线观看一区二区| 欧美大片一区二区| 亚洲美女一区| 亚洲欧美伊人| 国模套图日韩精品一区二区| 久久精品一区二区国产| 欧美高清在线| 亚洲无毛电影| 国产一区白浆| 蜜臀久久久99精品久久久久久 | 麻豆精品精华液| 亚洲国产精品成人| 欧美久久精品午夜青青大伊人| 一本一本a久久| 久久久久久久激情视频| 亚洲激情在线播放| 欧美日韩视频第一区| 亚洲一卡久久| 久久亚洲私人国产精品va媚药| 亚洲高清网站| 国产精品a级| 久久精品理论片| 亚洲七七久久综合桃花剧情介绍| 亚洲欧美成人网| 国产一区免费视频| 欧美精品在线观看| 先锋资源久久| 亚洲人成在线播放网站岛国| 亚洲在线第一页| 久久精品国产免费观看| 亚洲国产精品成人一区二区 | 欧美日韩1区2区| 午夜激情一区| 亚洲精品日韩在线观看| 久久av在线看| 一区二区三区国产在线| 国产中文一区二区三区| 欧美日韩成人综合天天影院| 午夜精品久久久久久久白皮肤| 亚洲电影免费在线| 欧美资源在线观看| 亚洲无玛一区| 亚洲高清毛片| 韩国av一区二区| 国产精品v欧美精品v日韩精品| 久久性天堂网| 欧美在线一二三| 亚洲丝袜av一区| 亚洲毛片一区| 亚洲国产日韩综合一区| 久久久综合激的五月天| 欧美一区二区免费观在线| 亚洲美女av网站| 亚洲国产精品成人一区二区| 国产欧美婷婷中文| 国产精品久久精品日日| 欧美精选在线| 欧美日韩高清区| 欧美刺激午夜性久久久久久久| 久久精品免视看| 久久国内精品视频| 欧美一区观看| 欧美一区二区视频免费观看| 亚洲午夜一区二区| 亚洲永久免费精品| 中文在线资源观看网站视频免费不卡| 亚洲区一区二| 亚洲免费观看| 一本色道88久久加勒比精品| 亚洲精品国产无天堂网2021| 亚洲国产成人av| 最近中文字幕日韩精品| 亚洲国内在线| 亚洲麻豆视频| 亚洲午夜免费福利视频| 在线亚洲免费| 亚洲欧美日韩精品综合在线观看| 亚洲色在线视频| 亚洲曰本av电影| 欧美亚洲日本网站| 久久男女视频| 欧美激情免费在线| 欧美久久九九| 国产精品一二三| 国产在线精品自拍| 亚洲高清资源| 亚洲另类视频| 午夜在线一区| 免费av成人在线| 亚洲国产高清高潮精品美女| 亚洲精品国产视频| 亚洲一区二区黄色| 欧美一区二区精品| 欧美va亚洲va国产综合| 欧美三区视频| 好吊日精品视频| 亚洲乱码久久| 久久精品国产久精国产爱| 久久中文在线| 一本不卡影院| 久久久99国产精品免费| 欧美日韩另类综合| 国模精品一区二区三区| 亚洲精品视频中文字幕| 午夜精品久久久久久久99樱桃| 久久一区二区三区四区| 亚洲三级免费观看| 久久精品99无色码中文字幕| 欧美三级电影大全| 亚洲电影欧美电影有声小说| 亚洲少妇一区| 欧美14一18处毛片| 亚洲综合国产精品| 欧美成人嫩草网站| 国模私拍视频一区| 亚洲欧美日韩国产综合| 欧美成人国产一区二区| 亚洲一区在线免费| 欧美激情综合网| 伊人狠狠色j香婷婷综合| 亚洲男同1069视频| 亚洲日本va在线观看| 久久综合九色综合久99|