================
@@ -119,7 +130,24 @@ class ThreadPoolExecutor : public Executor {
auto Task = std::move(WorkStack.back());
WorkStack.pop_back();
Lock.unlock();
- Task();
+
+ if (TheJobserver) {
+ JobSlot Slot = TheJobserver->tryAcquire();
----------------
nga888 wrote:
IIUC, I think this could cause deadlock. For example, if `make` has 4 job slots
and has already started 4 instances of `lld`, then there will never be an
available job slot on the assumption that each of the instances of `lld` need
to run some task in the thread pool. I think that one of the thread pool
threads needs to be unconditionally "always enabled". This might apply to
`ThreadPool.cpp` too.
https://github.com/llvm/llvm-project/pull/145131
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits