Создать несколько потоков в Qt

275
22 февраля 2017, 21:44

В Qt есть аналогичный способ создания нескольких потоков?

for (int i = 0; i < iThreadCount; ++i) {
    threads.push_back(boost::thread(func));
}
Answer 1

В Qt есть QThreadPool и QtConcurrent.

Например QtConcurrent::map:

struct Task {
  int i;
}
int foo(const Task& t) {
  return t.i * t.i;
}
QVector<Task> tasks;
tasks << Task{2} << Task{4};
QFuture<int> future = QtConcurrent::map(tasks, foo);
future.waitForFinished();

Результаты выполнения foo() в future.results().

Answer 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<QFuture<void> > futures; 
for (int i = 0; i < iThreadCount; ++i) {
    futures.append(QtConcurrent::run(func));
}
READ ALSO
#ifndef/#define VS #pragma once [дубликат]

#ifndef/#define VS #pragma once [дубликат]

На данный вопрос уже ответили:

447
функция в классе массив

функция в классе массив

Доброго времени суток! У меня есть класс массив

326
что не так в makefile

что не так в makefile

здравствуйте, есть такой makefile:

378
Ввод строк символами в двумерный вектор

Ввод строк символами в двумерный вектор

Имеется vector<vector<char>> и файл с текстомЦель: ввод этого текста в двумерный вектор

338