私はかなり標準的な生産者と消費者のスレッドを持っています:
- プロデューサーは、ファイルからバイトを読み取り、ブロッキング キューにデコードします。
- コンシューマはキューからアイテムをポーリングしています
デコード プロセスがボトルネックになることがあり、CPU を増やすことでメリットが得られる可能性があります。プロデューサー時間の 70% です。「デコーダー」スレッドを導入すると、顕著なパフォーマンスが得られますか?
- プロデューサーは、ファイルからブロッキング「オブジェクト」キューにバイトを読み取ります
- デコーダーはバイトオブジェクトをアイテムにデコードします
- 消費者は「デコードされた」アイテムをポーリングしています
メモリ フット プリントのために 1 つのキューを使用する必要があります - 2 つのキュー (バイト/アイテム) を持つ余裕がないので、オブジェクトの "キャスト" オーバーヘッドが存在すると思いますか?
この 3 スレッド ソリューションを実装する方法について何か考えはありますか?
ありがとうございました!