From ee7ecd8d63d1ee5fb1be87c41c8836a3f230c849 Mon Sep 17 00:00:00 2001 From: kiritow <1362050620@qq.com> Date: Thu, 9 Nov 2017 14:50:13 +0800 Subject: [PATCH] Update ThreadPool --- ThreadPool.cpp | 13 ++++++++++++- ThreadPool.h | 20 +++++++------------- 2 files changed, 19 insertions(+), 14 deletions(-) diff --git a/ThreadPool.cpp b/ThreadPool.cpp index 254948c..98c7d6f 100644 --- a/ThreadPool.cpp +++ b/ThreadPool.cpp @@ -1,7 +1,18 @@ #include "thread_pool.h" + +struct ThreadWorkerData +{ + std::function func; + std::mutex m; + std::condition_variable cond; + bool started; + bool finished; + bool running; +}; + using namespace std; -void _global_thread_worker_main(ThreadWorkerData* ptdd) +static void _global_thread_worker_main(ThreadWorkerData* ptdd) { unique_lock ulk(ptdd->m); while(ptdd->running) diff --git a/ThreadPool.h b/ThreadPool.h index f354504..e6809be 100644 --- a/ThreadPool.h +++ b/ThreadPool.h @@ -5,26 +5,20 @@ #include #include -struct ThreadWorkerData -{ - std::function func; - std::mutex m; - std::condition_variable cond; - bool started; - bool finished; - bool running; -}; - -void _global_thread_worker_main(ThreadWorkerData* ptdd); - +struct ThreadWorkerData; class ThreadPool { public: ThreadPool(int n); + /// NonCopyable, NonMovable. + ThreadPool(const ThreadPool&)=delete; + ThreadPool& operator = (const ThreadPool&)=delete; + ThreadPool(ThreadPool&&)=delete; + ThreadPool& operator = (ThreadPool&&)=delete; ~ThreadPool(); - int start(const std::function& func); + int start(const std::function&); private: std::vector dvec; std::vector tvec;