在有epoll 後,哪些應用場景下還需要select?
01-08
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的驚群問題?