7
A
回答
14
select
是做異步IO標準的UNIX工具。它的編程接口很古怪,它在大多數Unix中的實現最好是平庸的。它也限制了進程可以監視的描述符的最大數量,這在應用程序中是不方便的。關於效率,select
的性能通常隨着描述符的數量而線性降低。
epoll
在編程接口和效率方面比select
大了許多改進,但是僅在從2.6版開始的Linux中提供。其他的Unix也有他們的專門調用。
1
select
當調用select()
時,始終向內核傳遞描述符。
但是epoll
在調用epoll_ctl()
時傳遞一次描述符,並通過調用epoll_wait()
獲取事件。
並使用select
循環0到max_descriptor來檢查事件。
但是,在使用epoll
時,爲事件發生的描述符循環來檢查事件。
這些使性能有所不同。
和select
由於使用位數組而具有最大描述符數的限制。
但是epoll
沒有限制,因爲它使用結構數組。
而且select
存在於大多數的平臺(Windows,LINUX,UNIX,BSD)
但epoll
只存在於Linux操作系統。
當然,存在在其他平臺的epoll
置換(IOCP在窗戶,kqueue的在bsd,等等。)
相關問題
- 1. epoll/select for mutexes/semaphores
- 2. Epoll vs Libevent for Bittorrent like application
- 3. epoll vs選擇極少數的連接
- 4. SELECT * vs SELECT *
- 5. select(),poll()或epoll()?爲sysfs屬性
- 6. select vs distinct vs uniq?
- 7. socket select()vs non-block recv
- 8. SELECT RADIANS(47)vs SELECT RADIANS(47.0)
- 9. SELECT * VS SELECT * LIMIT(性能)
- 10. UPDATE VS COUNT VS SELECT性能
- 11. INSERT INTO VS SELECT INTO
- 12. mysqldump vs select into outfile
- 13. 爲什麼使用select(),當我們有poll()和epoll()時
- 14. select,epoll,kqueue和evport之間的根本區別是什麼?
- 15. linux設備驅動程序select/epoll支持
- 16. 專用協議的長期多線程客戶端(Python,select,epoll)
- 17. select/epoll/kqueue的C#等價函數是什麼?
- 18. 如何在此代碼中使用epoll而不是select?
- 19. SELECT FOR ALL ENTRIES vs LOOP SELECT SINGAPE ABAP
- 20. select top 1 * vs select top 1 1
- 21. 執行時間select * vs select count(*)
- 22. oracle中select * vs select colname的性能
- 23. epoll和超時
- 24. epoll多進程
- 25. C++ epoll與container_of
- 26. epoll性能
- 27. epoll with timerfd
- 28. SQL SELECT速度int vs varchar
- 29. Select-Option num value vs SQL num_row
- 30. 使用select循環VS fdisset
http://stackoverflow.com/questions/2032598/caveats-of-select-poll-vs -epoll反應器 - 在加捻 – Young 2011-06-10 07:57:01