Libevent的使用及reactor模型詳解
Libevent 是一個(gè)用C語(yǔ)言編寫(xiě)的、輕量級(jí)的開(kāi)源高性能事件通知庫(kù),主要有以下幾個(gè)亮點(diǎn):事件驅(qū)動(dòng)( event-driven),高性能;輕量級(jí),專(zhuān)注于網(wǎng)絡(luò),不如 ACE 那么臃腫龐大;源代碼相當(dāng)精煉、易讀;跨平臺(tái),支持 Windows、 Linux、 *BSD 和 Mac Os;支持多種 I/O 多路復(fù)用技術(shù), epoll、 poll、 dev/poll、 select 和 kqueue 等;支持 I/O,定時(shí)器和信號(hào)等事件;注冊(cè)事件優(yōu)先級(jí)。
libevent的流程可以分為三步:定義框架,注冊(cè)事件,啟動(dòng)事件循環(huán)(epoll檢測(cè)事件是否發(fā)生,發(fā)生的時(shí)候,通知子線(xiàn)程調(diào)用回調(diào)函數(shù)//此過(guò)程會(huì)阻塞)下圖為編寫(xiě)的框架
// 創(chuàng)建框架
struct event_base* base = NULL;
base = event_base_new();
// 添加事件
struct event* ev = NULL;
ev = event_new(base, fd, EV_READ | EV_PERSIST, read_cb, NULL);
event_add(ev, NULL);
// 事件循環(huán)
event_base_dispatch(base);
// 釋放資源
event_free(ev);
event_base_free(base);
close(fd);
return 0;
}

Reactor:事件源(描述符)、Reactor 框架、多路復(fù)用機(jī)制和事件處理程序
事件源可以理解為我們的文件描述符,多路復(fù)用機(jī)制是我們的IO模型(select,poll,epoll),事件處理程序理解為回調(diào)函數(shù)。

到此這篇關(guān)于Libevent的使用及reactor模型的文章就介紹到這了,更多相關(guān)Libevent reactor模型內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語(yǔ)言實(shí)現(xiàn)飛機(jī)訂票系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)飛機(jī)訂票系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-12-12
Flutter應(yīng)用Windows平臺(tái)接入實(shí)踐詳解
這篇文章主要為大家介紹了Flutter應(yīng)用Windows平臺(tái)接入實(shí)踐詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02
Qt使用QChart實(shí)現(xiàn)動(dòng)態(tài)顯示溫度變化曲線(xiàn)
Qt的QChart是一個(gè)用于繪制圖表和可視化數(shù)據(jù)的類(lèi),提供了一個(gè)靈活的、可擴(kuò)展的、跨平臺(tái)的圖表繪制解決方案,所以本文就將使用QChart實(shí)現(xiàn)動(dòng)態(tài)顯示3個(gè)設(shè)備的溫度變化曲線(xiàn),感興趣的可以了解一下2023-06-06
C++中對(duì)象的動(dòng)態(tài)建立與釋放詳解及其作用介紹
這篇文章主要介紹了C++中對(duì)象的動(dòng)態(tài)建立與釋放詳解及其作用介紹,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09
C++?Socket實(shí)現(xiàn)TCP與UDP網(wǎng)絡(luò)編程
本文主要介紹了C++?Socket實(shí)現(xiàn)TCP與UDP網(wǎng)絡(luò)編程,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01
C++ 中封裝的含義和簡(jiǎn)單實(shí)現(xiàn)方式
這篇文章主要介紹了C++ 中封裝的含義和簡(jiǎn)單實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07

