ThreadPool: catch Interrupted

This commit is contained in:
Robert Hensing 2024-10-10 12:46:36 +02:00
parent de41e46175
commit 3f9ff10786

View file

@ -110,6 +110,11 @@ void ThreadPool::doWork(bool mainThread)
propagate it. */ propagate it. */
try { try {
std::rethrow_exception(exc); std::rethrow_exception(exc);
} catch (const Interrupted &) {
// The interrupted state may be picked up multiple
// workers, which is expected, so we should ignore
// it silently and let the first one bubble up,
// rethrown via the original state->exception.
} catch (std::exception & e) { } catch (std::exception & e) {
if (!dynamic_cast<ThreadPoolShutDown*>(&e)) if (!dynamic_cast<ThreadPoolShutDown*>(&e))
ignoreExceptionExceptInterrupt(); ignoreExceptionExceptInterrupt();