2017-01-06 54 views
0

我剛開始學習編寫Linux服務器。
用多線程編碼一個簡單的服務器後,我不知道我們什麼時候應該使用select
什麼時候應該使用select與多線程比較?

我與多線程服務器是很簡單的:

while(true) 
{ 
    client = accept(sock); 
    pthread_create(client, processClientFunc); 
} 

每個客戶都有自己的線程,因此它可以與服務器通信。

我怎麼聽說有三個功能:select, poll and epoll

谷歌告訴我,select可以監視多個文件描述符。
好吧,我知道,但我認爲多線程可以滿足所有需求。另外,即使我使用select,我仍然需要使用多線程。

所以我的問題是:我們什麼時候應該用select

+1

請參閱:http://stackoverflow.com/questions/25091148/single-tcp-ip-server-that-handles-multiple-clients-in-c#25091952 – letmutx

回答

0

我從來沒有用過選擇自己,因爲民意調查提供了更好的可擴展性,如果我記得正確。我在處理大量連接時使用poll,並試圖最小化使用的線程數。多線程是昂貴的,通常是不必要的,除非你有很多連接或者你的連接在計算上/阻塞代價昂貴。使用正確的輪詢或選擇將允許您在一個線程中處理它們,甚至可以接受套接字並處理客戶端(至少通過輪詢)。

因此,只要有許多便宜的多連接節省多線程開銷,就可以使用poll/select。

相關問題