2016-06-18 3 views
1

У меня был класс, чьи функции-члены - VideoCapture и VideoWrite. Я хочу запустить два потока, чтобы выполнить два процесса параллельно. Я заметил, что нам нужно каждый раз создавать объект класса для запуска другого потока. Есть ли способ не создавать каждый раз другой объект класса?Как запустить два потока одного класса с использованием одного объекта с использованием QThread в cpp?

ответ

2

Вы не можете запустить класс в двух разных потоках - как правило, вы перемещаете экземпляр класса в поток. Вероятно, вам лучше сделать два отдельных класса, класс читателя/захвата и класс писателя и поместить каждый в свой собственный поток ... это довольно просто и эффективно.

Альтернатива, если вы действительно хотите сохранить класс вместе, вы можете использовать QtConcurrent для достижения этого - в зависимости от того, как работает ваш класс. Вы можете запускать свои функции захвата/записи (или любые тяжелые функции процессора) в qtconcurrent для фермы от тяжелой работы - в то время как обработка событий/цикл событий может выполняться только в основном потоке (или даже отдельном потоке для полностью отделите это от основной нити). См:

run member function qith QtConcurrent

и

QtConcurrent

Смежные вопросы