- A告訴B:如果幫我訂到OO票,打電話告訴我,我電話是1234
- 然後B開始一邊處理訂票,一邊去忙自己事情。當B訂到票之後,打電話給A通知成功
- A收到通知後,就去做後面的準備
B打電話給A的這個動作,就是去做回呼。A不知道B何時會通知他,B也不知道通知A之後要幹麼,一切都靠回呼動作和電話號碼來當通訊而已。
所以以C++來說,電話號碼等於是指標,告訴B電話請B打回,就是去註冊回呼動作!應該可以這樣說吧?借用網路上的範例:
class CallBackClass { // 宣告回呼函式的原型; typedef void (*CBFun)( int k ); // 宣告一個回呼函式指標; CBFun pCBFun; public: CallBackClass() { pCBFun= NULL; }// 初始化; void SetCallBack( CBFun fun ) { pCBFun= fun; }//註冊callback函式 void run() { //do something (*pCBFun)( i );//呼叫到callback function };
void myCBFun( int k ) { //自己寫被呼叫到後要幹麼 } int main( int argc, char* argv[] ) { CallBackClass cbc; cbc.SetCallBack( myCBFun );//註冊callback函式 cbc.run(); return 0; }我們的程式會用到Socket,要處理Receive的資料,所以把處理Received Data的function當作callback,寫在OnReceive的時候。一旦透過網卡收到封包,就會去callback囉~~
1 意見:
搜尋文章, 沒想到竟然會搜尋到你的BLOG
還在想說, 怎麼寫的跟以前待在X碼時的東西這麼像XD
張貼留言