Qt - какую технологию многопоточности выбрать, когда потоки нужно повторно использовать с сигналами и слотами? - PullRequest
0 голосов
/ 05 апреля 2020

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

  1. подкласс QThread (который по некоторым причинам не рекомендуется, а некоторые части все еще могут быть в главном потоке)
  2. подкласс QRunnable и использование QThreadpool (я не уверен если я смогу выполнить sh то, что я хочу, с помощью этих потоков, потому что потоки должны всегда существовать и прослушивать сигналы)
  3. использовать QtConcurrent :: run (также не уверен, смогу ли я использовать с ними сигналы и слоты и сохранять их в фон)

В документации не упоминается, является ли механизм сигнала / слота потокобезопасным и как поток s усыпляются, когда они заканчивают свою работу.

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