23 #ifndef _THREAD_WORKER_POOL_TASKCAP_HPP_ 24 #define _THREAD_WORKER_POOL_TASKCAP_HPP_ 30 template <
typename Context>
61 template <
typename Context>
82 template <
typename Context>
93 template <
typename Context>
97 std::unique_lock<std::mutex> ulock (
m_mutex);
109 template <
typename Context>
113 std::unique_lock<std::mutex> ulock (
m_mutex);
119 assert (ulock.owns_lock ());
124 template <
typename Context>
135 template <
typename Context>
138 std::unique_lock<std::mutex> ulock (
m_mutex);
142 assert (m_tasks_available <= m_max_tasks && m_tasks_available > 0);
148 template <
typename Context>
154 template <
typename Context>
157 , m_nested_task (task)
161 template <
typename Context>
167 template <
typename Context>
176 #endif // !_THREAD_WORKER_POOL_TASKCAP_HPP_ ~worker_pool_task_capper()=default
worker_pool_task_capper(worker_pool< Context > *worker_pool)
worker_pool_task_capper & m_capper
void push_task(task< Context > *task)
void execute(task< Context > *task)
virtual void retire(void)
bool try_task(task< Context > *task)
virtual void execute(context_type &)=0
cubthread::worker_pool< Context > * m_worker_pool
task_type * m_nested_task
void execute(context_type &ctx) override
std::condition_variable m_cond_var
std::size_t get_max_count(void) const
cubthread::worker_pool< Context > * get_worker_pool() const