wifidog源碼分析Lighttpd1.4.20源碼分析之fdevent系統(tǒng)(1)---fdevents結(jié)構(gòu)體和fdevent系統(tǒng)對(duì)外接口

前面講了lighttpd的插件系統(tǒng),這一篇將看一看lighttpd中的fdevent系統(tǒng)。fdevent系統(tǒng)主要是處理各種IO事件,在web服務(wù)器中,主要就是向socket寫數(shù)據(jù)和從socket讀數(shù)據(jù)。通常,web服務(wù)器是IO密集型程序,這就要求在數(shù)據(jù)的讀寫上,web服務(wù)器必須能夠具有很好的性能,不會(huì)因?yàn)槟硞€(gè)socket的阻塞而致使其他socket也被阻塞,否則會(huì)大大降低服務(wù)器的性能。因此,大部分的web服務(wù)器都采用非阻塞IO進(jìn)行數(shù)據(jù)的讀寫。lighttpd通過fdevent系統(tǒng),采用類似OO中面向?qū)ο蟮姆绞綄?duì)IO事件的處理進(jìn)行封裝,對(duì)于不同的IO系統(tǒng),提供一個(gè)統(tǒng)一的接口。

lighttpd采用了所謂的Reactor模式,也就是非阻塞IO加多路復(fù)用(non-blocking IO + IO multiplexing)。在多路復(fù)用上,lighttpd通過fdevent將各種不同的實(shí)現(xiàn)進(jìn)行封裝。lighttpd使用的多路IO有如下幾個(gè):

下面看一下fdevent.h中fdevents結(jié)構(gòu)體,這個(gè)結(jié)構(gòu)體相當(dāng)于是一個(gè)虛基類,其中的函數(shù)指針是純虛函數(shù)。對(duì)于每種實(shí)現(xiàn),則相當(dāng)于是繼承了這個(gè)基類并實(shí)現(xiàn)了其中的純虛函數(shù),也就是給函數(shù)指針賦一個(gè)函數(shù)地址值。下面是代碼:

......本站只呈現(xiàn)部分內(nèi)容,查看完整文章請(qǐng)到WiFiDog官網(wǎng)社區(qū) http://www.wifidog.pro/2015/04/20/wifidog%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90lighttpd%E5%AF%B9%E5%A4%96%E6%8E%A5%E5%8F%A3.html,轉(zhuǎn)載請(qǐng)注明出處

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容