什么是異步處理?
異步雙方不需要共同的時鐘,也就是接收方不知道發送方什么時候發送,所以在發送的信息中就要有提示接收方開始接收的信息,如開始位,結束時有停止位。 異步的概念和同步相對。當一個異步過程調用發出后,調用者不能立刻得到結果。
實際處理這個調用的部件在完成后,通過狀態、通知和回調來通知調用者。
以CAsycSocket類為例(注意,CSocket從CAsyncSocket派生,但是其功能已經由異步轉化為同步),當一個客戶端通過調用 Connect函數發出一個連接請求后,調用者線程立刻可以朝下運行。
當連接真正建立起來以后,socket底層會發送一個消息通知該對象。
這里提到執行部件和調用者通過三種途徑返回結果:狀態、通知和回調。
可以使用哪一種依賴于執行部件的實現,除非執行部件提供多種選擇,否則不受調用者控制。
如果執行部件用狀態來通知,那么調用者就需要每隔一定時間檢查一次,效率就很低(有些初學多線程編程的人,總喜歡用一個循環去檢查某個變量的值,這其實是一種很嚴重的錯誤)。
如果是使用通知的方式,效率則很高,因為執行部件幾乎不需要做額外的操作。至于回調函數,其實和通知沒太多區別。
上一篇什么叫隨機存取特性