// Copyright 2020 yuzu emulator team // Licensed under GPLv2 or any later version // Refer to the license.txt file included. #pragma once #include #include #include #include #include #include namespace Common { class ThreadWorker final { public: explicit ThreadWorker(std::size_t num_workers, const std::string& name); ~ThreadWorker(); void QueueWork(std::function&& work); private: std::vector threads; std::queue> requests; std::mutex queue_mutex; std::condition_variable condition; std::atomic_bool stop{}; }; } // namespace Common