selec和poll的區別
select:
- 檔案描述符數量限制:
select
通常有檔案描述符數量的限制,這取決於系統和配置,例如在Linux中預設限制為1024。 - 效率:
select
在處理大量檔案描述符時效率較低,因為它需要複製整個檔案描述符集合到核心空間。 - 返回值:
select
返回就緒的檔案描述符數量,需要程式遍歷整個檔案描述符集合來確定哪些檔案描述符就緒。 - 超時:
select
使用timeval
結構體來指定超時時間,如果超時則返回 0。
poll:
- 檔案描述符數量限制:
poll
沒有對檔案描述符數量的硬性限制,理論上可以處理更多的檔案描述符。 - 效率:
poll
透過使用一個單獨的結構體陣列來指定檔案描述符,避免了select
中的複製操作,提高了效率。 - 返回值:
poll
返回就緒的檔案描述符數量,同樣需要程式遍歷整個檔案描述符集合來確定哪些檔案描述符就緒。 - 超時:
poll
使用一個單獨的引數來指定超時時間,如果超時則返回 0。