// optimal number of threads #include "work.h" #include #include int main() { const std::size_t T = std::thread::hardware_concurrency(); std::vector t; for (std::size_t i = 0; i < T; ++i) t.emplace_back(work, i * N / T, (i + 1) * N / T); for (auto &i : t) i.join(); }