У меня проблемы с производителями и потребителями.
У меня есть один производитель, который производит данные очень быстро и берет данные с определенным периодом с внешнего сервера. У меня есть три потребителя, которым нужны эти данные. Потребители делают некоторые обработки по этим данным, поэтому потребители работают медленнее, чем производитель.
Я использую очередь для передачи данных, и после определенного размера я блокирую производителя и потребителей с помощью мьютексов и условных переменных. Но когда conditional_variable ждет, данные, которые поступают с сервера, будут обновлены, и когда я подожду, я пропущу некоторые данные. Как этого можно избежать?
Вы не можете заблокировать сбор данных производителем без потери информации, так что все, что вы можете наладить, - это связь. Либо производитель, либо потребитель или оба требуют буферизации, поэтому поступающие данные могут быть захвачены на полной скорости, а затем доставляются на обработку данных потребителя со скоростью, с которой она может идти в ногу с этим.
В зависимости от того, что вы делаете, на самом деле может быть хорошо потерять некоторое промежуточное состояние, когда последующие события сделают его устаревшим.