1. 程式人生 > >訊息機制和使用呼叫函式方式有何區別

訊息機制和使用呼叫函式方式有何區別

最關鍵的應用區別是,訊息機制可能解決不同執行緒間的資料轉輸和控制,而不同的執行緒間不能直接呼叫函式。
訊息機制是排隊處理方式,windows存在一個系統佇列,每當一個應用程式或一個執行緒發生一個事件或需要處理事務的時候並不是直接呼叫應用程式中的函式,而是把需求打包,向windows申請呼叫。
 
系統根據排程機制,從佇列中取得一個訊息包,拆箱,檢查內容,根據其來源,將訊息包重新打包,傳送給該包指定的應用程式佇列。應用程式回撥函式迴圈監視應用程式佇列,根據訊息包引數處理不同事務,執行完後將控制權釋放。
 
這樣做的好處是將主動權讓給作業系統,由系統排程分配執行時間,實現多工執行。
 
只有視窗處理函式利用訊息機制,一般情況都使用呼叫,除非你需要視窗處理指定的任務,那麼可以在如何時候傳送一個訊息給自己視窗。
 
至於優缺點,訊息機制針對作業系統的,一般任務都是直接呼叫,但是如果遇到佔用CPU時間長的事務,就要將事務分割成片段,然後傳送訊息給系統,請求呼叫,這樣不至於造成CPU假死。