Запустите и запустите функцию-член класса в фоновом режиме, в QT / C ++ - PullRequest
0 голосов
/ 26 апреля 2010

Раз в минуту я хочу запускать задачу, не блокируя другие функции графического интерфейса.Я что-то слышал о QConcurent :: run ...

Или я должен использовать сигналы и слоты?

Ответы [ 2 ]

2 голосов
/ 27 апреля 2010

Существует мир различий между двумя вариантами, которые вы обсуждаете.

Мой опыт был -

  1. Для функций, выполнение которых не занимает много времени, а поток графического интерфейса не очень занят, используйте сигналы и слоты. Это самый простой.
  2. Если ваша задача дольше выполняется, тогда вы можете использовать QConcurrent / QFutureWather, как предложено SB.
  3. Вы также можете посмотреть, используя QThread или QThreadPool .

У вас есть как минимум 3 варианта, если вам нужно многопоточность (используя только Qt). Каждый подход несколько отличается в том, как они работают и каковы их накладные расходы. Реальный выбор должен быть сделан на том, как вы используете многопоточность в остальной части вашего приложения.

2 голосов
/ 26 апреля 2010

Использование QConcurrent звучит так, как вам нужно. И вы можете использовать QFutureWatcher , чтобы получать сигналы, когда это будет сделано (которое использует сигналы и слоты)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...