国产成人毛片视频|星空传媒久草视频|欧美激情草久视频|久久久久女女|久操超碰在线播放|亚洲强奸一区二区|五月天丁香社区在线|色婷婷成人丁香网|午夜欧美6666|纯肉无码91视频

nio空輪詢 linux I/O多路復(fù)用模型,為什么epoll性能高于select和poll?

linux I/O多路復(fù)用模型,為什么epoll性能高于select和poll?嚴(yán)格地說,這種說法是不準(zhǔn)確的。Epoll的性能并不總是比select好。首先,我們需要了解select和Epoll的基本

linux I/O多路復(fù)用模型,為什么epoll性能高于select和poll?

嚴(yán)格地說,這種說法是不準(zhǔn)確的。Epoll的性能并不總是比select好。首先,我們需要了解select和Epoll的基本原理。

假設(shè)我們現(xiàn)在有100個套接字連接。select的方法是每隔一段時間輪詢這100個連接,以確定是否存在網(wǎng)絡(luò)事件。如果有,它會處理它們。

Epoll的方法是創(chuàng)建一個鏈表,然后告訴操作系統(tǒng),如果100個連接中的任何一個發(fā)生網(wǎng)絡(luò)事件,它將被放入鏈表中。然后epoll每隔一段時間就會檢查鏈表中是否有元素,如果有則進行處理。

與select相比,epoll大大減少了空輪詢次數(shù),提高了輪詢效率。同時,epoll使用MMAP對其進行優(yōu)化,因為它需要在select輪詢期間將所有連接的FD從內(nèi)核復(fù)制到用戶空間,這會增加IO開銷。

然而,我們不能簡單地說誰更好。

例如,如果100個連接的網(wǎng)絡(luò)活動非常頻繁,則select的每次輪詢將很少或沒有空輪詢,select的無用功能將非常少。相反,epoll的性能會因為多了一步操作而變差。

因此,select適用于業(yè)務(wù)時間較短的短鏈接,如通用HTTP服務(wù)。Epoll適用于連接時間長但網(wǎng)絡(luò)活動不頻繁的場景,如聊天室。

epoll讀到一半又有新事件來了,該怎么辦?

Epoll需要與多個線程協(xié)同工作才能獲得最佳性能。當(dāng)輪詢線程接收到IO時,它會立即將工作移交給預(yù)先分配的線程池以完成讀寫工作,而不是阻塞輪詢線程。這樣,就不會有讀寫另一個信號的問題。