通過傳送訊息來實現執行緒間通訊

2021-04-26 23:42:18 字數 1038 閱讀 6972

通過傳送訊息來實現執行緒間通訊

2023年11

月12日星期三

執行緒間通常需要通訊,可以通過傳送訊息來實現執行緒間的通訊。但通常將繼承執行緒類

cwinthread

(在mfc

中),需要注意兩點:一是,執行緒函式的訊息對映巨集(

on_thread_message

);二是,給執行緒發訊息的函式(

postthreadmessage

)。詳細的**實現如下:

執行緒類:

begin_message_map(ccaculatethread, cwinthread)

on_thread_message(wm_caculate,oncaculate)

// 繼承cwinthread類的訊息對映

end_message_map()

// ccaculatethread

訊息處理程式

void

ccaculatethread::oncaculate(wparam wparam, lparam lparam)

sleep(500);

// 將計算結果發給主線程

::postmessage(getmainwnd()->getsafehwnd(),wm_display,nsum,null); }

主視窗實現:

void

ccommunicate_multithreaddlg::onbnclickedbutton1()

void

ccommunicate_multithreaddlg::onbnclickedradio3()

void

ccommunicate_multithreaddlg::onbnclickedradio1()

void

ccommunicate_multithreaddlg::onbnclickedradio2()

lresult ccommunicate_multithreaddlg::ondisplay(wparam wparam, lparam lparam)

通過訊息佇列實現兩程序間通訊

環境 linux c 功能 通過訊息佇列實現兩程序間通訊 clienta include include include include include include include include 定義訊息型別 typedef struct msg define len sizeof msg s...

Windows 執行緒間訊息通訊

使用訊息 message 是執行緒見通訊的常用方法之一。windows也提供了許多函式來實現這一點。主要使用的函式有postthreadmessage peekmessage getmessage 發訊息 執行緒需要接收訊息的話需要有個訊息佇列,預設是不具有訊息佇列的。在目標執行緒裡使用peekme...

多執行緒間訊息通訊

自定義windows訊息 define my msg wm user 1 為了防止使用者自定義訊息id與系統訊息id衝突,使用者只能定義wm user 0x0400 以後的id使用 postthreadmessage 將乙個佇列訊息放入 寄送 到指定執行緒的訊息佇列裡,不等待執行緒處理訊息就返回 b...