Допустим, у меня есть вектор из 100 элементов и Func1 и Func2. В однопоточной версии Func1 обрабатывают векторные элементы, и когда Func1 завершает работу, Func2 должен запускать другой процесс для элементов. Мне любопытно узнать, использую ли я QtConcurrent::map
в следующем порядке, в каком порядке на самом деле будут выполняться Func1 и Func2?
QFuture<void> future;
future = QtConcurrent::map(vector, Func1);
future = QtConcurrent::map(vector, Func2);
Я должен упомянуть, что использование future.waitForFinished()
заблокирует основной поток моего приложения которого я не хочу.
future = QtConcurrent::map(vector, Func1);
future.waitForFinished();
future = QtConcurrent::map(vector, Func2);
Также я не хочу выполнять эти QtConcurrent::map
во вторичном потоке и выполнять future.waitForFinished()
там, потому что при таком подходе я потеряю один из своих потоки в катушке ниток. Итак, вопрос в том, выполняются ли задачи, добавленные QtConcurrent::map
, по порядку?
EDIT
Как в однопоточных, так и в многопоточных подходах Func2 должен запускаться только после Func1 заканчивает обработку всех элементов.