#cpp #qt
В Qt есть аналогичный способ создания нескольких потоков? for (int i = 0; i < iThreadCount; ++i) { threads.push_back(boost::thread(func)); }
Ответы
Ответ 1
В Qt есть QThreadPool и QtConcurrent. Например QtConcurrent::map: struct Task { int i; } int foo(const Task& t) { return t.i * t.i; } QVectortasks; tasks << Task{2} << Task{4}; QFuture future = QtConcurrent::map(tasks, foo); future.waitForFinished(); Результаты выполнения foo() в future.results(). Ответ 2
1) Пул потоков: class Thread : public QRunnable{ void run(){ func(); } }; //... for (int i = 0; i < iThreadCount; ++i) { QThreadPool::globalInstance()->start(new Thread); } 2) QtConcurrent::run //вместо void тип возвращаемого значения func QVector> futures; for (int i = 0; i < iThreadCount; ++i) { futures.append(QtConcurrent::run(func)); }
Комментариев нет:
Отправить комментарий