diff --git a/include/ThreadPool.h b/include/ThreadPool.h index 1fdf48e..8b50c88 100644 --- a/include/ThreadPool.h +++ b/include/ThreadPool.h @@ -40,6 +40,7 @@ public: inline ThreadPool(); inline ~ThreadPool(); inline void push(const std::function &task); + inline void push(std::function &&task); inline void start(const long NumOfThreads = std::thread::hardware_concurrency()); inline void finish(); @@ -83,6 +84,12 @@ void ThreadPool::push(const std::function &task) { _queueCond.notify_one(); } +void ThreadPool::push(std::function&& task) { + std::unique_lock lg(_queueLock); + _tasks.push_back(std::move(task)); + _queueCond.notify_one(); +} + void ThreadPool::start(const long NumOfThreads) { if (!started_already) started_already = true;