Вступить в клуб →
сложнаявопросСовременный C++: move-семантика, шаблоны, лямбды

Параллельная обработка файлов через 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 получает путь по ссылке и блокируется

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела