Как сохранить отзывчивость пользовательского интерфейса при 100% загрузке ЦП (В основном с использованием C++ и Qt )?

Я столкнулся с проблемой между тем, где мне нужно сохранить мой пользовательский интерфейс (и полную отзывчивость ОС )в многопоточном -приложении.

Я разрабатываю приложение (на основе С++ и Qt ), которое одновременно получает и преобразует множество видеокадров из нескольких потоков.

Каждый поток извлекается, преобразуется и обрабатывается в отдельном рабочем потоке (с использованием DirectX ). Это означает, что я не использую поток GUI по умолчанию для рендеринга кадра.

На мощном компьютере у меня нет проблем, потому что процессор может обрабатывать все данные и сохранять время для потока графического интерфейса для обработки запроса пользователя. Но на старом компе это не работает, ЦП используется на 100% для обработки моих данных,и пользовательский интерфейс отстает, может пройти 10 секунд, прежде чем нажатие кнопки будет обработано.

Я хотел бы, чтобы мой пользовательский интерфейс реагировал. На самом деле, я хочу, чтобы мой рабочий поток работал, только если нет других действий. Я попытался изменить приоритет рабочего потока на низкий, но это не сработало. Я также пробовал спать (10 )в рабочем потоке, но поскольку у меня может быть много потоков, они не засыпают одновременно, поэтому это тоже не работает.

Каков наилучший способ сохранить отзывчивость пользовательского интерфейса в этом случае (независимо от того, какой инструментарий использует )?

10
задан Bart 17 July 2012 в 13:50
поделиться