§ 10. Многопоточное программирование

Задания

  1. Реализуйте параллельный алгоритм сортировки слиянием с помощью std::thread. Максимальное количество потоков должно быть ограничено количеством ядер вашего процессора (функция std::thread::hardware_concurrency). В зависимости от версии компилятора вам может понадобится добавить зависимость в Мезоне:
    threads = dependency('threads')
    executable(..., dependencies: [threads], ...)
    
  2. Напишите модульный тест, который проверяет корректность работы сортировки с помощью последовательного аналога.
  3. Составьте таблицу или постройте график зависимости времени работы алгоритма от размера массива. Для этого измерьте время работы с помощью класса std::chrono::system_clock. Пример есть в презентации.