2017-01-06 14 views
0

Linuxサーバー用のコードを学び始めました。
マルチスレッドでシンプルなサーバーをコーディングした後、私はいつselectを使うべきか分かりません。マルチスレッドと
マルチスレッドと比べてselectをいつ使うべきですか?

私のサーバーは非常に簡単です:

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

それがサーバーと通信できるように、各クライアントは独自のスレッドを持っています。

どのように私は3つの機能があったと聞いた:select, poll and epoll

Googleは、selectが複数のファイル記述子を監視できることをGoogleに教えてくれました。
さて、わかりましたが、私はマルチスレッドがすべてのニーズをカバーできると思います。また、selectを使用しても、マルチスレッドを使用する必要があると思います。

私の質問は:selectをいつ使うべきですか?

+1

次を参照してください:http://stackoverflow.com/questions/25091148/single-tcp-ip-server-that-handles-multiple-clients-in-c#25091952 – letmutx

答えて

0

私が正しくリコールした場合、ポールはスケーラビリティが優れているため、決して自分自身を使用したことはありません。私は多くの接続を処理しているときに投票を使用し、使用するスレッドの数を最小限に抑えようとしています。マルチスレッドは高価であり、多くの接続があるか、接続が計算上/高価になっている場合を除き、一般的には不要です。よく配置されたポーリングまたはセレクトを使用すると、ソケットを受け入れてクライアントを処理する(少なくともポーリングでも)すべてを1つのスレッドで処理できるようになります。

マルチスレッドのオーバーヘッドを節約するために安価な接続が多数ある場合は常にpoll/selectを使用してください。

関連する問題