From a5b17c83b2aef192e4cfdc7a27d28b09a5a9ab4e Mon Sep 17 00:00:00 2001 From: hitonanode <32937551+hitonanode@users.noreply.github.com> Date: Sun, 19 Oct 2025 01:57:32 +0900 Subject: [PATCH] fix parallel runner --- multithread/parallel_runner.hpp | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/multithread/parallel_runner.hpp b/multithread/parallel_runner.hpp index 0e667fe3..d6fa3c9a 100644 --- a/multithread/parallel_runner.hpp +++ b/multithread/parallel_runner.hpp @@ -23,11 +23,12 @@ template class ParallelRunner { int num_threads_; std::vector instances; std::vector> rets; + int num_failures_; std::mutex mtx; ParallelRunner(int num_threads = std::thread::hardware_concurrency()) - : num_threads_(num_threads > 0 ? num_threads : 1) { + : num_threads_(num_threads > 0 ? num_threads : 1), num_failures_(0) { std::cerr << "num_threads: " << num_threads_ << std::endl; } @@ -40,6 +41,10 @@ template class ParallelRunner { } } + void show_result() const { + std::cerr << "Done: " << num_failures_ << " failures." << std::endl; + } + void run_sequential() { rets.assign(instances.size(), std::nullopt); @@ -49,6 +54,8 @@ template class ParallelRunner { mhc_stdout_(instances.at(index), rets.at(index).value(), index); } } + + show_result(); } void run_parallel(int num_skip = 0) { @@ -85,6 +92,8 @@ template class ParallelRunner { } for (auto &f : futures) f.get(); + + show_result(); } void run_single_(int current_index) { @@ -100,10 +109,12 @@ template class ParallelRunner { } catch (const std::exception &e) { std::unique_lock lock(mtx); std::cerr << "Error in Case #" << current_index + 1 << ": " << e.what() << std::endl; + ++num_failures_; return; } catch (...) { std::unique_lock lock(mtx); std::cerr << "Unknown error in Case #" << current_index + 1 << std::endl; + ++num_failures_; return; } @@ -122,7 +133,6 @@ template class ParallelRunner { std::cout << std::flush; } }; - #endif // PARALLEL_RUNNER_HPP /* Usage: @@ -143,10 +153,12 @@ struct Solver { } }; -int T; -cin >> T; +int main() { + int T; + cin >> T; -ParallelRunner pm; -pm.read_all(T); -pm.run_parallel(); + ParallelRunner pm; + pm.read_all(T); + pm.run_parallel(); +} */