From 69d269d71864840f96964bd3bf020125971ea4af Mon Sep 17 00:00:00 2001
From: Yohann Bearzi <yohann.bearzi@kitware.com>
Date: Mon, 14 Aug 2023 10:21:17 -0400
Subject: [PATCH] vtkThreadedCallbackQueue: fixing rare deadlock

`NumberOfThreads` update must be done under a lock so threads waiting
are ensured to see the new size.
---
 Parallel/Core/vtkThreadedCallbackQueue.cxx | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/Parallel/Core/vtkThreadedCallbackQueue.cxx b/Parallel/Core/vtkThreadedCallbackQueue.cxx
index 5c88259051c..07dd38404cf 100644
--- a/Parallel/Core/vtkThreadedCallbackQueue.cxx
+++ b/Parallel/Core/vtkThreadedCallbackQueue.cxx
@@ -171,7 +171,10 @@ void vtkThreadedCallbackQueue::SetNumberOfThreads(int numberOfThreads)
         }
       }
 
-      this->NumberOfThreads = numberOfThreads;
+      {
+        std::lock_guard<std::mutex> lock(this->Mutex);
+        this->NumberOfThreads = numberOfThreads;
+      }
       this->ConditionVariable.notify_all();
       this->Sync(this->NumberOfThreads);
 
-- 
GitLab