У меня есть вариант использования, когда быстрый производитель вставляет данные в очередь, а медленный потребитель потребляет данные. Проблема, с которой я сталкиваюсь, - это постоянное увеличение размера очереди с течением времени. У меня есть реализация класса, в которой std :: queue защищена мьютексом и условной переменной для одновременных операций чтения и записи.
Как это можно адаптировать к случаю, когда производитель после достижения MAX_THRESHOLD до прекращения вставки данных в очередь, а потребитель израсходовал некоторое количество сигналов данных, чтобы производитель вставил данные в очередь.
Может ли кто-нибудь предоставить образец реализации?
Также без изменения реализации класса можно ли решить эту проблему, добавив еще один уровень синхронизации в производителе и потребителе?