void wait()

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();
        }
      }
    }