diff --git a/common/cpp/src/asapo_fabric/asapo_fabric.cpp b/common/cpp/src/asapo_fabric/asapo_fabric.cpp index e4612b7c754e3e4705d4d7015c68b14b298e7cf7..a74a25c93e0945e2e17f864c5385c4df4125a395 100644 --- a/common/cpp/src/asapo_fabric/asapo_fabric.cpp +++ b/common/cpp/src/asapo_fabric/asapo_fabric.cpp @@ -3,6 +3,7 @@ #ifdef LIBFABRIC_ENABLED #include <dlfcn.h> +#include <mutex> #include "fabric_factory_impl.h" #include "fabric_function_map.h" #endif @@ -11,6 +12,9 @@ using namespace asapo::fabric; std::unique_ptr<FabricFactory> asapo::fabric::GenerateDefaultFabricFactory() { #ifdef LIBFABRIC_ENABLED + static std::mutex lock; + std::unique_lock<std::mutex> local_lock (lock); + if (gffm().is_init_) { return std::unique_ptr<FabricFactory>(new FabricFactoryImpl()); }