Я работаю над средством просмотра множества Мандельброта, и мне нужно создать фиксированное количество рабочих потоков. Я хотел бы отправлять данные для обработки в эти потоки, испуская сигналы из основного потока. Когда эти потоки заканчивают sh их работа, они должны излучать сигнал и активировать слот в главном потоке (я планирую использовать счетчик, который увеличивается с каждым сигналом, чтобы я мог знать, когда все потоки завершены). Я вижу, что есть несколько способов выполнить sh многопоточность:
- подкласс QThread (который по некоторым причинам не рекомендуется, а некоторые части все еще могут быть в главном потоке)
- подкласс QRunnable и использование QThreadpool (я не уверен если я смогу выполнить sh то, что я хочу, с помощью этих потоков, потому что потоки должны всегда существовать и прослушивать сигналы)
- использовать QtConcurrent :: run (также не уверен, смогу ли я использовать с ними сигналы и слоты и сохранять их в фон)
В документации не упоминается, является ли механизм сигнала / слота потокобезопасным и как поток s усыпляются, когда они заканчивают свою работу.