В Qt есть аналогичный способ создания нескольких потоков?
for (int i = 0; i < iThreadCount; ++i) {
threads.push_back(boost::thread(func));
}
В 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()
.
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));
}
Имеется vector<vector<char>> и файл с текстомЦель: ввод этого текста в двумерный вектор