1

プロセスの優先度を 1 に設定した場合SCHED_FIFO、プロセスが管理している複数の tcp 接続の 1 つに処理可能なデータがあるかどうかを効率的に確認するにはどうすればよいですか?

理想的には、複数の tcp ソケットに処理の準備が整ったデータがある場合は、マルチスレッド化したいと考えています。

各ソケットをチェックする無限ループのように見えると思いますが、Linuxスケジューラに解決策があるようです。

4

1 に答える 1

0

SCHED_FIFO が従来のサーバー設計にどのように影響するかわかりません。リスニングソケットとacceptによって返されたソケットの使用を意味します。アイデアは、メインスレッドがリスニングソケットでブロックされ、新しい接続が受信されたときに、accept によって返された fd を新しいスレッドに渡す必要があるということです。すべての新しい接続に対して新しいスレッドを作成するか、スレッドプールを制限してより適切に制御することができます。

他のアイデアは、fd で select を呼び出すスレッドを使用することであり、メイン スレッドは接続をリッスンして受け入れることができます。 . データが受信されると、スレッド プールのワーカー スレッドを使用してタスクを割り当てることができます。

于 2012-06-17T15:52:14.420 に答える