亚洲综合图片区自拍_思思91精品国产综合在线观看_一区二区三区欧美_欧美黑人又粗又大_亚洲人成精品久久久久桥本

世界熱議:實現(xiàn)一個簡單的事件驅(qū)動處理框架

2023-06-09 10:24:19 來源:嵌入式應(yīng)用研究院


(相關(guān)資料圖)

事件驅(qū)動框架允許程序處理外部事件,如網(wǎng)絡(luò)連接、文件I/O、超時和信號。事件驅(qū)動框架可以讓程序通過回調(diào)函數(shù)處理不同的事件,回調(diào)函數(shù)可以在事件觸發(fā)時立即被調(diào)用。

要實現(xiàn)一個簡單事件驅(qū)動框架,首先需要創(chuàng)建一個事件處理函數(shù),它是根據(jù)發(fā)生的不同事件調(diào)用不同的回調(diào)函數(shù)。然后,我們需要編寫代碼來注冊事件的回調(diào)函數(shù),即當某個事件發(fā)生時就要調(diào)用該回調(diào)函數(shù)。

直接開干:

#include#include#include#include#include//定義事件類型typedefenumEventType_t{EVENT_TEST_A=0,EVENT_TEST_B,EVENT_TEST_C,EVENT_ALL_NUM}EventType_t;//定義事件處理函數(shù)類型typedefvoid(*EventHandler_t)(EventType_ttype,void*pArg);//定義事件對象typedefstructEvent_t{EventType_ttype;EventHandler_thandler;void*pArg;}Event_t;//事件列表Event_tEventList[EVENT_ALL_NUM]={0};//注冊事件并將事件以及事件處理函數(shù)等添加到事件列表中voidRegisterEvent(EventType_ttype,EventHandler_thandler,void*pArg){if(type>=EVENT_ALL_NUM){printf("Invalideventtype!");return;}EventList[type].type=type;EventList[type].handler=handler;EventList[type].pArg=pArg;}//根據(jù)具體的某個事件調(diào)用對應(yīng)的事件觸發(fā)函數(shù)voidTriggerEvent(EventType_ttype){if(type>=EVENT_ALL_NUM){printf("Invalideventtype!");return;}if(EventList[type].handler!=NULL){EventList[type].handler(type,EventList[type].pArg);}}//對應(yīng)事件A的處理函數(shù)voidHandlerEventTestA(EventType_ttype,void*pArg){printf("HandlerEventTestAiscalled!");}//對應(yīng)事件B的處理函數(shù)voidHandlerEventTestB(EventType_ttype,void*pArg){printf("HandlerEventTestBiscalled!");}void*ThreadHandler(void*Arg){   while(1)   {     //觸發(fā)事件A     TriggerEvent(EVENT_TEST_A);     usleep(1000*1000);     //觸發(fā)事件B     TriggerEvent(EVENT_TEST_B);     usleep(1000*1000);   }}intmain(void){   pthread_tThread;   //注冊事件A&BRegisterEvent(EVENT_TEST_A,HandlerEventTestA,NULL);RegisterEvent(EVENT_TEST_B,HandlerEventTestB,NULL);   pthread_create(&Thread,NULL,ThreadHandler,NULL);   pthread_detach(Thread);while(1)   {    usleep(2000*10);   }return0;}

編譯程序:gcc test.c -o test -lpthread

運行結(jié)果:

審核編輯:湯梓紅

標簽:

上一篇:電源設(shè)計中電容的工作原理 各類電源中電容器的正確選用
下一篇:最后一頁