Linux回呼函數

來源:互聯網
上載者:User
  

1       回呼函數呼叫歷程圖 

對於第一種情況,主程式可以從執行到回呼函數,也可以不執行回呼函數,關鍵看宿主函數是否調用了回呼函數。對於第二種情況,主程式可以從執行到回呼函數,也可以不執行回呼函數,關鍵看宿主函數是否調用了回呼函數。主程式不知道宿主函數什麼時候調用回呼函數,因為調用函數啟動了線程,這樣,主程式就不必關心宿主函數什麼時候調用回呼函數了,主程式可以釋放出來做自己的事了。 1       程式碼範例#include <stdio.h>   typedef void(*lpFunc)(void *, char *);    // 函數指標// 回呼函數的宿主函數,在這裡回調用函數被使用,void GetCallBack(void * lpVoid, lpFunc callback){       callback(lpVoid, "test");}  class A{public:       A(){};              void outName(char szAlarm[]){              printf("my name is %s /n", szAlarm);              }              // 被宿主調用的回呼函數       static void fCallback(void *lpVoid, char szAlarm[]){              A * p = (A*)(lpVoid);              p->outName(szAlarm);       }              //調用外部宿主函數,當Test函數調用過宿主函數以後,Test就再也不關心宿主函數       //什麼時候調用回呼函數了,因為那時宿主函數自己的事了       void Test(){              GetCallBack(this, fCallback);       }};  int main(void){       A a;       a.Test();}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.