高速なプロデューサーがキューにデータを挿入し、低速なコンシューマーがデータを消費するユース ケースがあります。私が直面している問題は、時間の経過とともにキューのサイズが継続的に増加することです。std::queue が同時読み取りと書き込みのミューテックスと条件変数によって保護されるクラス実装があります。
プロデューサーが MAX_THRESHOLD に達した後、キューへのデータの挿入を停止し、コンシューマーがある程度の量のデータを消費すると、プロデューサーにデータをキューに挿入するように信号を送る場合に、これをどのように適応させることができますか。
誰かがサンプル実装を提供できますか?
また、クラスの実装を変更せずに、プロデューサーとコンシューマーに別の同期レイヤーを追加することで、この問題を解決できますか?