そこで、ジョブ<>タスクシステムをスレッドに組み込み、なるべく1つのスレッドが複数のジョブを実行できる様にし、1つのスレッドが長時間無停止でCPUを可能な限り選挙し続ける、CPUの血の一滴までOSではなくアプリで使い切るシステムが必要になる。
そうすると自動的に、プログラムはイベントドリブンな非同期プログラムを書くことになっていく。そうすると従来のread,write,select,pollなIOではIOレベルで非同期の品質が高くないのでWindowsのオーバーラップ IOなどの出番となっていく。
もし、あなたが、スレッドのコンテキスト切り替えのコストすら切り詰めなければならないような、超大規模、超高速システムを作ることになった場合、非同期、イベントドリブン、スレッド数をCPUのコア数に可能な限り近づける(コア数以下では意味がないのでせいぜい2倍程度が目安か?)、Windowsのオーバーラップ IOのような高速な非同期IOを使う といったキーワードを覚えておくと、うまく設計できるのではないかと思う。
また、WindowsのオーバーラップIOにはマニュアルにはないが、命名規則から推測すると呼べる関数がいくつか存在しているはずである。もうマニュアル整備されたかもしれないけど・・・
それらをつかうと、TCPのコネクションにおいて、Connect関数なども全て非同期にできるのでSYNだけを送るという事が出来TCPレベルでの通信速度や、同時接続数などはものすごく改善される。
まぁ、バッドノウハウですけど・・・
あくまでも、C,C++を長くやってきた物の経験則上なんですけどね。
参考
Schi Heil と叫ぶために - プロセス、スレッド、ファイバ、タスク、ジョブ、違いを整理してみよう
Windows オーバーラップ IO - Google 検索