理解select、epoll

MaChao發表於2020-10-28

問題:如果我們先前建立的幾個程式承載不了目前快速發展的業務的話,是不是還得增加程式數?我們都知道系統建立程式是需要消耗大量資源的,所以這樣就會導致系統資源不足的情況。

那麼有沒有一種方式可以讓一個程式同時為多個客戶端端提供服務?接下來要講的IO複用技術就是對於上述問題的最好解答。對於IO複用,我們可以通過一個例子來很好的理解它。

某教室有10名學生和1名老師,這些學生上課會不停的提問,所以一個老師處理不了這麼多的問題。那麼學校為每個學生都配一名老師,也就是這個教室目前有10名老師。此後,只要有新的轉校生,那麼就會為這個學生專門分配一個老師,因為轉校生也喜歡提問題。如果把以上例子中的學生比作客戶端,那麼老師就是負責進行資料交換的服務端。則該例子可以比作是多程式的方式。

後來有一天,來了一位具有超能力的老師,這位老師回答問題非常迅速,並且可以應對所有的問題。而這位老師採用的方式是學生提問前必須先舉手,確認舉手學生後在回答問題。則現在的情況就是IO複用


目前的常用的IO複用模型有三種:select,poll,epoll。

blog.csdn.net/wteruiycbqqvwt/artic...
www.jianshu.com/p/397449cadc9a

適用場景

  • select適合少量活躍連線,一般幾千。
  • epoll適合大量不太活躍的連線。
  • 如果有大量活躍連線可以使用多程式+select。
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章