потребитель газа в потоке производителя / потребителя - PullRequest
0 голосов
/ 25 марта 2011

Существует один потребительский поток и один производитель.Получение данных потока производителя происходит медленно.Он запрашивает у сокета данные, и время, необходимое для создания данных для потребителя, значительно больше, чем время, необходимое потребителю для обработки и отправки данных.Проблема в том, что я обновляю дисплей, поэтому я хочу, чтобы обновления замедлялись, чтобы они появлялись непрерывно, а не обновлялись пакетами.

Я сейчас использую двойной буфер, но потребитель слишком долго ждет замены буферов, потому что производитель слишком долго производит данные.Возможно, если я разделю данные на более мелкие блоки и вместо этого буду использовать очередь?Таким образом, производитель будет кормить потребителя немного за один раз?Кто-нибудь когда-нибудь сталкивался с этой проблемой?

Ответы [ 2 ]

1 голос
/ 05 апреля 2011

Почему бы не иметь поток, который обновляет экран один раз в секунду? Поток может спать в течение секунды, просыпаться, проверять, что делают производитель и потребитель, и обновлять экран, основываясь на их прогрессе. Вы будете получать обновления каждую секунду. Если вы хотите, чтобы они работали быстрее или медленнее, измените интервал таймера.

0 голосов
/ 25 марта 2011

Я собираюсь заблокировать скорость отправки клиенту на частоте, основанной на скорости запроса данных.Сначала я думал, что продюсер будет намного быстрее, чем это было, поэтому я превратил его в поток «производитель / потребитель».Это больше похоже на проблему с частотой кадров, когда мне нужно синхронизировать вывод с постоянной скоростью.

...