- 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
張貼留言