1

マルチスレッド Web サーバーを作成したいのですが、スレッド プールを使用する必要があります。スレッド プールにキューを使用できますか? もしそうなら、キューを循環にすることをお勧めしますか、それとも二重リンク リストと言いますか? Web サーバーの実装に適しているのはどれですか? キューが適切な選択ではない場合、スレッド プールにはどのデータ構造が推奨されますか?

4

1 に答える 1

1

スレッドセーフな任意のキューを使用できます。しかし、その Web サーバーの負荷が高い場合は、配列に基づくロック フリー キューを使用する方がよい場合があります。これにより、配列を時々割り当てるだけで済みます (マイケルとスコットのキューはノードに基づいているため、単純な実装では、エンキューを作成するたびにノードを割り当て、デキューで解放する必要があります)。(私の意見では、配列ベースのキュー (deques ではなく) の方が、さまざまなタスク間で公平であるため、より優れています。)

deque ではなく queue を使用することをお勧めします。(ワーク スティーリングは両端キューを使用しますが、クライアントに公正に参加する必要があります。したがって、両端キューは、スタックのように動作するため、最初の要求が最後に応答されます。) ロック フリーの同時キューについては、このページを参照してください (この私が思うに最先端です) http://mcg.cs.tau.ac.il/projects/lcrq/

于 2014-02-26T09:44:24.573 に答える