================ @@ -92,30 +104,32 @@ class ThreadPool { &Group); } - /// Blocking wait for all the threads to complete and the queue to be empty. - /// It is an error to try to add new tasks while blocking on this call. - /// Calling wait() from a task would deadlock waiting for itself. - void wait(); +private: + /// Asynchronous submission of a task to the pool. The returned future can be + /// used to wait for the task to finish and is *non-blocking* on destruction. + template <typename ResTy> + std::shared_future<ResTy> asyncImpl(std::function<ResTy()> Task, + ThreadPoolTaskGroup *Group) { - /// Blocking wait for only all the threads in the given group to complete. - /// It is possible to wait even inside a task, but waiting (directly or - /// indirectly) on itself will deadlock. If called from a task running on a - /// worker thread, the call may process pending tasks while waiting in order - /// not to waste the thread. - void wait(ThreadPoolTaskGroup &Group); +#if LLVM_ENABLE_THREADS + /// Wrap the Task in a std::function<void()> that sets the result of the ---------------- joker-eph wrote:
removed https://github.com/llvm/llvm-project/pull/82094 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits