[C++]關於Callback Function

Callback Function就是給別人"回呼"的函式。假設這樣場景:

  1. A告訴B:如果幫我訂到OO票,打電話告訴我,我電話是1234
  2. 然後B開始一邊處理訂票,一邊去忙自己事情。當B訂到票之後,打電話給A通知成功
  3. 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 意見:

WEI 提到...

搜尋文章, 沒想到竟然會搜尋到你的BLOG
還在想說, 怎麼寫的跟以前待在X碼時的東西這麼像XD

搜尋此網誌

總網頁瀏覽量

TK呱呱

Made with by TK