in dispenso/thread_pool.h [179:189]
inline void ThreadPool::schedule(F&& f) {
ssize_t curWork = workRemaining_.load(std::memory_order_relaxed);
ssize_t quickLoadFactor = numThreads_.load(std::memory_order_relaxed);
quickLoadFactor += quickLoadFactor / 2;
if ((detail::PerPoolPerThreadInfo::isPoolRecursive(this) && curWork > quickLoadFactor) ||
(curWork > poolLoadFactor_.load(std::memory_order_relaxed))) {
f();
} else {
schedule(std::move(f), ForceQueuingTag());
}
}