Я столкнулся с проблемой между тем, где мне нужно сохранить мой пользовательский интерфейс (и полную отзывчивость ОС )в многопоточном -приложении.
Я разрабатываю приложение (на основе С++ и Qt ), которое одновременно получает и преобразует множество видеокадров из нескольких потоков.
Каждый поток извлекается, преобразуется и обрабатывается в отдельном рабочем потоке (с использованием DirectX ). Это означает, что я не использую поток GUI по умолчанию для рендеринга кадра.
На мощном компьютере у меня нет проблем, потому что процессор может обрабатывать все данные и сохранять время для потока графического интерфейса для обработки запроса пользователя. Но на старом компе это не работает, ЦП используется на 100% для обработки моих данных,и пользовательский интерфейс отстает, может пройти 10 секунд, прежде чем нажатие кнопки будет обработано.
Я хотел бы, чтобы мой пользовательский интерфейс реагировал. На самом деле, я хочу, чтобы мой рабочий поток работал, только если нет других действий. Я попытался изменить приоритет рабочего потока на низкий, но это не сработало. Я также пробовал спать (10 )в рабочем потоке, но поскольку у меня может быть много потоков, они не засыпают одновременно, поэтому это тоже не работает.
Каков наилучший способ сохранить отзывчивость пользовательского интерфейса в этом случае (независимо от того, какой инструментарий использует )?