Temporarily disable multiple threads for VTK, then resume them later.
Code example:
// flags for recover multi threads later
std::string m_OriginalBackend;
bool m_OriginalEnableSMP;
int m_OriginalNumOfThreadsInMultiThreader;
// make it to be Sequential
m_OriginalBackend = vtkSMPTools::GetBackend();
vtkSMPTools::SetBackend( "Sequential" );
m_OriginalEnableSMP = vtkThreadedImageAlgorithm::GetGlobalDefaultEnableSMP();
vtkThreadedImageAlgorithm::SetGlobalDefaultEnableSMP( false );
m_OriginalNumOfThreadsInMultiThreader = vtkMultiThreader::GetGlobalMaximumNumberOfThreads();
vtkMultiThreader::SetGlobalMaximumNumberOfThreads(1);
LOG( INFO, "m_OriginalBackend: ", m_OriginalBackend, ", m_OriginalEnableSMP: ", m_OriginalEnableSMP, ", m_OriginalNumOfThreadsInMultiThreader: ", m_OriginalNumOfThreadsInMultiThreader );
// recover multi threads
vtkSMPTools::SetBackend( m_OriginalBackend.c_str() );
vtkThreadedImageAlgorithm::SetGlobalDefaultEnableSMP( m_OriginalEnableSMP );
vtkMultiThreader::SetGlobalMaximumNumberOfThreads(m_OriginalNumOfThreadsInMultiThreader);