Merged PR 4527632: Fix race condition creating resource store

Port https://github.com/microsoft/onnxruntime/pull/3419

Fixes #25822488 and #25880544
This commit is contained in:
Tiago Koji Castro Shibata 2020-04-07 20:31:24 +00:00
commit ff51d752d1
2 changed files with 4 additions and 6 deletions

View file

@ -53,16 +53,12 @@ Windows::AI::MachineLearning::LearningModelDevice LearningModelDevice::CreateFro
WINML_CATCH_ALL
std::shared_ptr<::Windows::AI::MachineLearning::ConverterResourceStore> LearningModelDevice::TensorizerStore() {
if (m_tensorizerStore == nullptr) {
m_tensorizerStore = ::Windows::AI::MachineLearning::ConverterResourceStore::Create(5);
}
std::call_once(m_tensorizerStoreInitialized, [this](){ m_tensorizerStore = ::Windows::AI::MachineLearning::ConverterResourceStore::Create(5); });
return m_tensorizerStore;
}
std::shared_ptr<::Windows::AI::MachineLearning::ConverterResourceStore> LearningModelDevice::DetensorizerStore() {
if (m_detensorizerStore == nullptr) {
m_detensorizerStore = ::Windows::AI::MachineLearning::ConverterResourceStore::Create(5);
}
std::call_once(m_detensorizerStoreInitialized, [this](){ m_detensorizerStore = ::Windows::AI::MachineLearning::ConverterResourceStore::Create(5); });
return m_detensorizerStore;
}

View file

@ -84,7 +84,9 @@ struct LearningModelDevice : LearningModelDeviceT<LearningModelDevice, IMetacomm
bool m_isCpuDevice;
bool m_areMetacommandsEnabled = true;
std::shared_ptr<WinML::ConverterResourceStore> m_detensorizerStore;
std::once_flag m_detensorizerStoreInitialized;
std::shared_ptr<WinML::ConverterResourceStore> m_tensorizerStore;
std::once_flag m_tensorizerStoreInitialized;
std::unique_ptr<D3DDeviceCache> m_deviceCache;
};