新聞中心
kqueue是一種針對(duì)BSD系操作系統(tǒng)實(shí)時(shí)網(wǎng)絡(luò)IO處理的性能優(yōu)化解決方案,近年來(lái),也開(kāi)始運(yùn)用在linux系統(tǒng)中。它擁有極佳性能,徹底解決了linux系統(tǒng)中對(duì)多客戶(hù)端更新處理的問(wèn)題。

我們提供的服務(wù)有:成都網(wǎng)站建設(shè)、網(wǎng)站制作、微信公眾號(hào)開(kāi)發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、禪城ssl等。為上1000+企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢(xún)和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的禪城網(wǎng)站制作公司
與select系統(tǒng)調(diào)用和poll系統(tǒng)調(diào)用不同,kqueue不要求每次都重新傳遞客戶(hù)端文件描述符,而可以建立針對(duì)指定文件描述符的事件隊(duì)列,當(dāng)事件發(fā)生時(shí),可將其寫(xiě)入隊(duì)列前端。
一般的使用方法是使用kqueue系統(tǒng)調(diào)用先創(chuàng)建一個(gè)操作,然后將想要監(jiān)聽(tīng)的文件描述符(比如套接字)添加到操作之中,最后使用kevent系統(tǒng)調(diào)用等待事件發(fā)生,當(dāng)事件發(fā)生時(shí),可以獲得指定文件描述符的終端事件數(shù)組,做出相應(yīng)的處理。
//函數(shù)示例
//創(chuàng)建kqueue
int kq=kqueue();
//添加文件描述符,可監(jiān)聽(tīng)
struct kevent change;
EV_SET(&change, listenfd, EVFILT_READ, EV_ADD|EV_ENABLE, 0, 0, NULL);
//等待事件發(fā)生
int nev = kevent(kq, &change, 1, events, MAXFDS, NULL);
//確定事件
for (int i = 0; i
int fd = events[i].data.fd;
if (events[i].filter == EVFILT_READ) {
// 讀事件
} else if (events[i].filter == EVFILT_WRITE) {
//寫(xiě)事件
}
}
kqueue有諸多優(yōu)點(diǎn),主要有以下幾點(diǎn):
首先,kqueue允許你動(dòng)態(tài)更改感興趣的事件類(lèi)型,無(wú)需每次掃描fd,可以減輕系統(tǒng)負(fù)擔(dān);
其次,kqueue對(duì)操作系統(tǒng)的依賴(lài)小,因此比較便于實(shí)現(xiàn)跨平臺(tái)及兼容操作系統(tǒng)間的移植;
再次,kqueue非常精確,即使在同一次系統(tǒng)調(diào)用中,也能獲取多個(gè)文件描述符的觸發(fā)及狀態(tài),效率極高;
最后,kqueue還具有可擴(kuò)展性,支持除磁盤(pán)IO和網(wǎng)絡(luò)IO外的其他IO操作,比如定時(shí)器事件,文件監(jiān)控。
由此可見(jiàn),kqueue在linux系統(tǒng)中的運(yùn)用,不僅擁有更少的代碼,而且性能極佳。因此,它正越來(lái)越受到開(kāi)發(fā)者的青睞,成為一款被廣泛使用的處理多客戶(hù)端更新的利器。
香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開(kāi)通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過(guò)10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開(kāi)發(fā)經(jīng)驗(yàn)。專(zhuān)業(yè)提供云主機(jī)、虛擬主機(jī)、域名注冊(cè)、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。
當(dāng)前題目:kqueue在linux中的應(yīng)用及其優(yōu)勢(shì)(kqueuelinux)
文章來(lái)源:http://fisionsoft.com.cn/article/djehcpo.html


咨詢(xún)
建站咨詢(xún)
