Какой шаблон лучше всего обрабатывать X элементов в секунду на C++?C++

Программы на C++. Форум разработчиков
Ответить
Гость
 Какой шаблон лучше всего обрабатывать X элементов в секунду на C++?

Сообщение Гость »


У меня есть класс Consumer, который должен удалять n элементов из очереди в секунду, но не более того:

класс Consumer { Consumer(int items_per_sec, Storage& Storage): items_per_sec{items_per_sec}, хранилище{хранилище} {} недействительный потреблять () { while (!storage.empty()) { for (int i = 0; i < items_per_sec; ++i) { хранилище.потреблять(); } std::this_thread::sleep_for(1s); } } частный: int items_per_sec; Хранение и хранение; }; Здесь Хранилище — это поточно-ориентированная абстракция очереди. Предположим, что существует также класс Producer, который добавляет элементы в это хранилище, но в какой-то момент останавливается, и существует только один поток-производитель и один поток-потребитель.

С этим кодом есть (как минимум) две проблемы, но я не знаю, как их исправить:
[*]Потребитель не потребляет ровно n элементов в секунду, поскольку он спит целую секунду после обработки n элементов (предположим, n не будет настолько большим, чтобы обработка элементов n занимала более 1 секунды, но и не обязательно крошечным). [*]Если на последнюю секунду не осталось ровно n элементов, Потребитель попытается использовать слишком много раз.
Как вообще правильно реализовать этот шаблон «делать что-то n раз в секунду»?
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»