in dispenso/detail/pipeline_impl.h [79:96]
void wait() {
if (!unlimited_) {
OnceFunction func;
while (queue_.try_dequeue(func)) {
while (resources_.fetch_sub(1, std::memory_order_acq_rel) <= 0) {
std::this_thread::yield();
resources_.fetch_add(1, std::memory_order_acq_rel);
}
tasks_.schedule(std::move(func));
}
}
while (outstanding_.load(std::memory_order_acquire)) {
if (!tasks_.tryExecuteNext()) {
std::this_thread::yield();
}
}
}