何かリクエストを受け付けて処理をして返すという、サーバーでよく行われる処理を考えてみましょう。一度に多数リクエストを受け付けて同時並行的に処理が行えるようにしたい場合、1つのやり方としてマルチスレッド化してあるスレッドで accept(2) しておいて、それを別のスレッド(ワーカースレッド)に振り分け、そのスレッドでは recv(2) / send(2) で通信を行うという方法があります。しかし、その場合スレッド数を超えるリクエストを同時に捌けないという欠点があります。recv はまだデータが来てないという場合には待ちが発生しますので、待っている間そのスレッドは遊んでしまって無駄になってしまいます。スレッドを CPU のコア数より多めに取っておけばそれは回避できますが、スレッド切り替えのオーバーヘッドがかかり、またスレッドを生成出来る個数の上限も合って、あまり多数のクライアントをさばくこと