made change of commit b997641ba4 template-based: no runtime cost

This commit is contained in:
Kjistóf 2016-12-01 20:06:33 +01:00
parent caafcfbaf9
commit 6e26ad2bf0

View File

@ -52,8 +52,8 @@ class thread_pool
/* the main loop of the threads */ /* the main loop of the threads */
void loop(); void loop();
template <typename F, typename... Args> template <bool front, typename F, typename... Args>
auto _add_task_internal(bool front, F&& f, Args&&... args) auto _add_task_internal(F&& f, Args&&... args)
-> std::future<decltype(f(std::forward<Args>(args)...))>; -> std::future<decltype(f(std::forward<Args>(args)...))>;
public: public:
@ -91,8 +91,8 @@ public:
inline size_t get_queue_size() const { return queue.size(); } inline size_t get_queue_size() const { return queue.size(); }
}; };
template <typename F, typename... Args> template <bool front, typename F, typename... Args>
auto thread_pool::_add_task_internal(bool front, F&& f, Args&&... args) auto thread_pool::_add_task_internal(F&& f, Args&&... args)
-> std::future<decltype(f(std::forward<Args>(args)...))> -> std::future<decltype(f(std::forward<Args>(args)...))>
{ {
auto pckgd_tsk = std::make_shared<std::packaged_task<decltype(f(std::forward<Args>(args)...))()> > auto pckgd_tsk = std::make_shared<std::packaged_task<decltype(f(std::forward<Args>(args)...))()> >
@ -130,14 +130,14 @@ template <typename F, typename... Args>
auto thread_pool::add_task(F&& f, Args&&... args) auto thread_pool::add_task(F&& f, Args&&... args)
-> std::future<decltype(f(std::forward<Args>(args)...))> -> std::future<decltype(f(std::forward<Args>(args)...))>
{ {
return _add_task_internal(false, std::forward<F>(f), std::forward<Args>(args)...); return _add_task_internal<false>(std::forward<F>(f), std::forward<Args>(args)...);
} }
template <typename F, typename... Args> template <typename F, typename... Args>
auto thread_pool::priority_task(F&& f, Args&&... args) auto thread_pool::priority_task(F&& f, Args&&... args)
-> std::future<decltype(f(std::forward<Args>(args)...))> -> std::future<decltype(f(std::forward<Args>(args)...))>
{ {
return _add_task_internal(true, std::forward<F>(f), std::forward<Args>(args)...); return _add_task_internal<true>(std::forward<F>(f), std::forward<Args>(args)...);
} }
template <typename R> template <typename R>