相同點都是對其他線程或本線程發(fā)送送消息
成都創(chuàng)新互聯(lián)公司專注于利川網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供利川營銷型網(wǎng)站建設(shè),利川網(wǎng)站制作、利川網(wǎng)頁設(shè)計、利川網(wǎng)站官網(wǎng)定制、成都小程序開發(fā)服務(wù),打造利川網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供利川網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
不同點:
(1)SendMessage是線程阻塞的,要等到其他線程(特指窗口)響應(yīng)完消息,并返回值,才能繼續(xù)執(zhí)行.PostMessage不阻塞.
(2)SendMessage的返回值是其他線程處理后返回的值,PostMessage的返回值是true或false,表示函數(shù)是否正常執(zhí)行.
(3)SendMessage執(zhí)行時會造成線程切換,直到下一個CPU時間到來時,才能檢測返回值并向下執(zhí)行.所為了提高系統(tǒng)執(zhí)行效率,可以在另外一個線程中應(yīng)該立即返回:
if(InSendMessage)
? ? RelpyMessage(value);
PostMessage不阻塞當(dāng)前線程,立刻返回,繼續(xù)執(zhí)行.
(4)SendMessage
如果目標(biāo)窗口是當(dāng)前線程創(chuàng)建的,則消息不進(jìn)窗口的消息隊列。否則進(jìn)入窗口的SendMessage消息隊列。
PostMessage會進(jìn)入窗口的PostMessage消息隊列。
所以PostMessage的消息會有相對的延遲.具體使用哪個函數(shù),看使用是否關(guān)心這種延遲.
每個窗口都有4個消息隊列,分別為:
<1>.? ? ? ?Send Message Queue發(fā)送消息隊列
<2>.? ? ? ?Posted Message Queue登記消息隊列
<3>.? ? ? ?Visualized Input Queue輸入消息隊列
<4>.? ? ? ?Reply Message Queue 響應(yīng)消息隊列