Параллельная обработка файлов через std::async идёт строго по очереди
for (const auto& path : files) { // 8 файлов, по ~2 с каждый
std::async(std::launch::async, compressFile, path);
}
Машина 16-ядерная, но цикл выполняется 16 секунд, и в htop занято одно ядро. Почему?
- Деструктор future из async ждёт завершения задачи
- std::async по умолчанию выполняет задачи лениво
- Пул потоков std::async ограничен одним потоком
- compressFile получает путь по ссылке и блокируется
