#pragma once #include "thread_pool.h" #include #include class GlobalThreadPool { private: static std::unique_ptr instance_; static std::once_flag initialized_; public: static ThreadPool& getInstance() { std::call_once(initialized_, []() { unsigned int hw_threads = std::thread::hardware_concurrency(); size_t num_threads = hw_threads > 4 ? hw_threads / 2 : 2; instance_ = std::make_unique(num_threads); }); return *instance_; } static void shutdown() { instance_.reset(); } };