回調機制
一、基本概念
軟件模塊之間總是存在著一定的接口,從調用方式上,可以把他們分為三類:同步調用、回調和異步調用。
同步調用是一種阻塞式調用,調用方要等待對方執行完畢才返回,它是一種單向調用,如HTTP;
回調是一種雙向調用模式,也就是說,被調用方在接口被調用時也會調用對方的接口;
異步調用是一種類似消息或事件的機制,不過它的調用方向剛好相反,接口的服務在收到某種訊息或發生某種事件時,會主動通知客戶方(即調用客戶方的接口),如JMS;
回調和異步調用的關系非常緊密,通常我們使用回調來實現異步消息的注冊,通過異步調用來實現消息的通知。同步調用是三者當中最簡單的,而回調又常常是異步調用的基礎。
二、基本實現
在C語言中,如果參數是一個函數指針,調用者可以傳遞一個函數的地址給實現者,讓實現者去調用它,這稱為回調函數。





























在面向對象的語言中(以Java為例),主要利用多態來實現回調,其原理和觀察者模式相似,被調函數首先要在調用者身上注冊,當某一事件觸發時,回調函數被觸發;有個很形象的說法:我去找你解決一個問題,但你目前也不知道如何解決,要研究一會,我就把我的聯系方式告訴你,你解決問題后主動告訴我吧。這就是一個異步的回調,我省去了一直等待這個過程,我可以利用這些時間去處理別的事情。
一個詳細的代碼例子:
2011年4月29日

















































三、參考資料
1)異步消息的傳遞-回調機制
2)C語言回調函數
posted on 2011-04-29 22:36 XXXXXX 閱讀(367) 評論(0) 編輯 收藏 所屬分類: Programing