1ソケットごと送受信する以下の4種類のプログラムを作ってみたのですが
1. 2スレッドで同期ソケット
 送信スレッドはキューにたまるのをcondition/event等待ち、sendする
 受信スレッドはrecvで待ち
2. 2スレッドで非同期ソケット
 送信スレッドはキューにたまるのをcondition/event等待ち、sendする
 受信スレッドはselectで待ち、recvする
3. スレッド無しで同期ソケット
 タイマー、ソケットからのイベントなどで定期的にselectで確認して必要なソケットのrecvを行う
 タイマー、ソケットからのイベントなどでキューにたまっているソケットのsendをselectで確認後行う
4. スレッド無しで非同期ソケット
 タイマー、ソケットからのイベントなどで定期的に全てのソケットでrecvを試す
 タイマー、ソケットからのイベントなどでキューにたまっているソケットのsendを行う
Linux/Windowsそれぞれあまり性能差、負荷の差がありませんでした。
通常はどれがいいのでしょうか?
ソケット数は100ぐらいが限度で、メモリ、CPUは問題ない環境です。