void CPUThreadPoolExecutor::add( Func func, std::chrono::milliseconds expiration, Func expireCallback) { // TODO handle enqueue failure, here and in other add() callsites taskQueue_->add( CPUTask(std::move(func), expiration, std::move(expireCallback))); }
void CPUThreadPoolExecutor::add( Func func, std::chrono::milliseconds expiration, Func expireCallback) { auto result = taskQueue_->add( CPUTask(std::move(func), expiration, std::move(expireCallback))); if (!result.reusedThread) { ensureActiveThreads(); } }
void CPUThreadPoolExecutor::add( Func func, int8_t priority, std::chrono::milliseconds expiration, Func expireCallback) { CHECK(getNumPriorities() > 0); taskQueue_->addWithPriority( CPUTask(std::move(func), expiration, std::move(expireCallback)), priority); }
void CPUThreadPoolExecutor::add( Func func, int8_t priority, std::chrono::milliseconds expiration, Func expireCallback) { CHECK(getNumPriorities() > 0); auto result = taskQueue_->addWithPriority( CPUTask(std::move(func), expiration, std::move(expireCallback)), priority); if (!result.reusedThread) { ensureActiveThreads(); } }
void CPUThreadPoolExecutor::stopThreads(size_t n) { threadsToStop_ += n; for (size_t i = 0; i < n; i++) { taskQueue_->addWithPriority(CPUTask(), Executor::LO_PRI); } }