Я пытаюсь придумать модель синхронизации для следующего сценария:
У меня есть поток графического интерфейса, который отвечает за интенсивную загрузку процессора + блокировку ввода-вывода.Поток графического интерфейса извлекает изображения из сети (помещает их в общий буфер), эти изображения обрабатываются (интенсивная загрузка ЦП .. выполняется рабочим потоком), а затем эти изображения анимируются (опять же интенсивно загружаются ЦП .. потоковой графический интерфейс пользователя)).
Обработка изображений выполняется рабочим потоком. Он извлекает изображения из общего буфера, обрабатывает их и помещает в выходной буфер.
ЦП иПоток GUI не должен планироваться, пока он анимирует изображения (анимация должна быть действительно плавной).Это означает, что рабочий поток должен получать ЦП только тогда, когда поток GUI ожидает завершения операции ввода-вывода.
Как мне добиться этого?Это похоже на классическую потребительскую проблему производителя ... но я не совсем уверен, как я могу гарантировать, что анимация будет максимально плавной (я открыт для использования большего количества потоков).
Я бы хотелиспользуйте QThreads (каркас Qt) для независимости от платформы, но я могу рассмотреть pthreads для большего контроля (поскольку в настоящее время мы стремимся только к Linux).
Любые идеи?
РЕДАКТИРОВАТЬ:
Я предполагаю, что проблемы сводятся к одной вещи ... как я могу гарантировать, что поток анимации не прерывается во время анимации изображений (анимация запускается, когда пользователь переходит с одной страницы на другую ... все изображения вновая страница анимируется, прежде чем показываться в нужном месте. Это небольшая операция, но она должна быть очень плавной.) Рабочий поток может выполняться только после окончания анимации.