標籤:

在有epoll 後,哪些應用場景下還需要select?

epoll優於select,那select現在還在那些場景下需要使用且使用select要優於epoll的?


一些奇怪的用法…… 比如 CPython 里的 `time.sleep` 函數,就是用 select 的 timeout 參數來實現精確休眠時間的 = =

據說這是 POSIX 平台下兼容性最好,又非常精確的做法。


select 足夠簡單 跨平台.

在手頭沒有成熟的epoll技術積累, 而網路使用場景又不需要高並發(比如客戶端或者服務端內部通訊) select是和epoll比起來有壓倒性優勢.

epoll只是linux專用的並發管理手段, 如果和windows下IOCP結合做跨平台 還是要很多功夫才能做到易用的, 我自己用EPOLL+IOCP封裝的zsummerX, 這點是有體會的.

大部分情況下 除了伺服器的前端接入這個場景下 其他的select都足夠了, ( 如果只考慮linux平台 select支持1000個左右並發 分散式服務中接入服務一般開多個來冗餘 epoll在這裡也沒多大優勢), 之所以服務端全都是EPOLL IOCP 只是因為統一, 方便封裝/使用和調測等.


epoll不能處理文件的文件描述符。


可以在http://tilaile.com里看看類似的面試題是怎麼被回答的~~~~


如果最多就幾個連接,都活躍,用select寫起來簡單


沒聽過宿舍阿姨的故事了吧,要是一個阿姨只服務一個宿舍效率剛剛滴。


少量的FD用select比epoll高效多了


v2ex有人提到過在windows用select支持c100k的量,毫無壓力。


推薦閱讀:

現在 epoll 單機(4G內存)並發量最大能達到多少?
使用epoll時需要將socket設為非阻塞嗎?
epoll實現中共享內存問題?
大神們來看看這樣架構 使用epoll有沒有問題?
Linux 3.x 中epoll的驚群問題?

TAG:Nginx | epoll |