QTcpServer と QTcpSocket の上に実装された FTP サーバーがあります。
スレッドが 1 つしかない場合でも、シグナルとスロットのメカニズムを利用して、複数の TCP 接続を同時にサポートします。私のコードはできるだけ早くイベント ループに戻り、ブロックせず (待機関数なし)、ネストされたイベント ループをどこにも使用しません。そうすれば、Win3.1 アプリケーションが持っていたように、私はすでに協調マルチタスキングを持っています。
しかし、他の多くの FTP サーバーはマルチスレッド化されています。各 TCP 接続を処理するために個別のスレッドを使用すると、パフォーマンス、特にレイテンシが向上するかどうか疑問に思っています。
一方では、新しい接続ごとに新しいスレッドを開始する必要があるため、スレッドはレイテンシーを増加させますが、他方では、私の協調的マルチタスクでは、他の TCP 接続は、readyRead()
/bytesWritten()
シグナルの前にメインループに戻るまで待機する必要があります。扱うことができます。