diff options
author | bunnei <bunneidev@gmail.com> | 2020-12-30 01:36:35 +0100 |
---|---|---|
committer | bunnei <bunneidev@gmail.com> | 2020-12-30 01:46:29 +0100 |
commit | 69e82d01d5012c0078f65a294ecbb7118707f73c (patch) | |
tree | d8bac45fa91904abec67a0d76c29e4f7e3aeaab8 /src/common/thread_worker.h | |
parent | hle: kernel: Manage host thread IDs using TLS. (diff) | |
download | yuzu-69e82d01d5012c0078f65a294ecbb7118707f73c.tar yuzu-69e82d01d5012c0078f65a294ecbb7118707f73c.tar.gz yuzu-69e82d01d5012c0078f65a294ecbb7118707f73c.tar.bz2 yuzu-69e82d01d5012c0078f65a294ecbb7118707f73c.tar.lz yuzu-69e82d01d5012c0078f65a294ecbb7118707f73c.tar.xz yuzu-69e82d01d5012c0078f65a294ecbb7118707f73c.tar.zst yuzu-69e82d01d5012c0078f65a294ecbb7118707f73c.zip |
Diffstat (limited to '')
-rw-r--r-- | src/common/thread_worker.h | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/common/thread_worker.h b/src/common/thread_worker.h new file mode 100644 index 000000000..f1859971f --- /dev/null +++ b/src/common/thread_worker.h @@ -0,0 +1,30 @@ +// Copyright 2020 yuzu emulator team +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#pragma once + +#include <atomic> +#include <functional> +#include <mutex> +#include <string> +#include <vector> +#include <queue> + +namespace Common { + +class ThreadWorker final { +public: + explicit ThreadWorker(std::size_t num_workers, const std::string& name); + ~ThreadWorker(); + void QueueWork(std::function<void()>&& work); + +private: + std::vector<std::thread> threads; + std::queue<std::function<void()>> requests; + std::mutex queue_mutex; + std::condition_variable condition; + std::atomic_bool stop{}; +}; + +} // namespace Common |