diff options
Diffstat (limited to 'src/common/thread_worker.h')
| -rw-r--r-- | src/common/thread_worker.h | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/common/thread_worker.h b/src/common/thread_worker.h index 7a6756eb5..7e2b04a07 100644 --- a/src/common/thread_worker.h +++ b/src/common/thread_worker.h | |||
| @@ -11,18 +11,20 @@ | |||
| 11 | #include <vector> | 11 | #include <vector> |
| 12 | #include <queue> | 12 | #include <queue> |
| 13 | 13 | ||
| 14 | #include "common/unique_function.h" | ||
| 15 | |||
| 14 | namespace Common { | 16 | namespace Common { |
| 15 | 17 | ||
| 16 | class ThreadWorker final { | 18 | class ThreadWorker final { |
| 17 | public: | 19 | public: |
| 18 | explicit ThreadWorker(std::size_t num_workers, const std::string& name); | 20 | explicit ThreadWorker(std::size_t num_workers, const std::string& name); |
| 19 | ~ThreadWorker(); | 21 | ~ThreadWorker(); |
| 20 | void QueueWork(std::function<void()>&& work); | 22 | void QueueWork(UniqueFunction<void> work); |
| 21 | void WaitForRequests(); | 23 | void WaitForRequests(); |
| 22 | 24 | ||
| 23 | private: | 25 | private: |
| 24 | std::vector<std::thread> threads; | 26 | std::vector<std::thread> threads; |
| 25 | std::queue<std::function<void()>> requests; | 27 | std::queue<UniqueFunction<void>> requests; |
| 26 | std::mutex queue_mutex; | 28 | std::mutex queue_mutex; |
| 27 | std::condition_variable condition; | 29 | std::condition_variable condition; |
| 28 | std::condition_variable wait_condition; | 30 | std::condition_variable wait_condition; |