Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@ struct MersenneTwisterGlobals
MersenneTwisterGlobals() = default;
~MersenneTwisterGlobals() = default;

MersenneTwisterRandomVariateGenerator::Pointer m_StaticInstance{};
std::mutex m_StaticInstanceMutex{};
std::atomic<MersenneTwisterRandomVariateGenerator::IntegerType> m_StaticDiffer{};
};
Expand Down Expand Up @@ -74,13 +73,14 @@ MersenneTwisterRandomVariateGenerator::GetInstance()
itkInitGlobalsMacro(PimplGlobals);
const std::lock_guard<std::mutex> lockGuard(m_PimplGlobals->m_StaticInstanceMutex);

if (!m_PimplGlobals->m_StaticInstance)
thread_local MersenneTwisterRandomVariateGenerator::Pointer threadSafeInstance{};
if (!threadSafeInstance)
{
m_PimplGlobals->m_StaticInstance = MersenneTwisterRandomVariateGenerator::CreateInstance();
m_PimplGlobals->m_StaticInstance->SetSeed();
threadSafeInstance = MersenneTwisterRandomVariateGenerator::CreateInstance();
threadSafeInstance->SetSeed();
}

return m_PimplGlobals->m_StaticInstance;
return threadSafeInstance;
Comment on lines -77 to +83
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nitpick: I would name it threadLocalInstance, rather than threadSafeInstance. The original instance m_StaticInstance was thread-safe already, but your essential change is to make it thread local.

Then I would suggest to have it initialized during its declaration, so that it can be const:

  const thread_local MersenneTwisterRandomVariateGenerator::Pointer threadLocalInstance = [] {
    MersenneTwisterRandomVariateGenerator::Pointer instance = MersenneTwisterRandomVariateGenerator::CreateInstance();
    instance->SetSeed();
    return instance;
  }();

  return threadLocalInstance;

}


Expand Down