From 61423abbb6405bc4f8abf408bc5d23b50b6e1d2b Mon Sep 17 00:00:00 2001 From: Chen Lihui Date: Thu, 27 Oct 2022 16:58:04 +0800 Subject: [PATCH] update doc and some minor fix Signed-off-by: Chen Lihui --- src/multi_library_class_loader.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/multi_library_class_loader.cpp b/src/multi_library_class_loader.cpp index ccf3743..d7ba907 100644 --- a/src/multi_library_class_loader.cpp +++ b/src/multi_library_class_loader.cpp @@ -44,7 +44,9 @@ class ClassLoaderDependency protected: ClassLoaderDependency() { - // make the static variable in `ClassLoader` destroyed after `active_class_loaders_` + // make the static variable in `ClassLoader` destroyed after `class_loader_ptrs_`, + // which is a member of ClassLoaderPtrVectorImpl defined as a static instance in the + // `getClassLoaderPtrVectorImpl` class_loader::impl::getLoadedLibraryVectorMutex(); class_loader::impl::getPluginBaseToFactoryMapMapMutex(); class_loader::impl::getGlobalPluginBaseToFactoryMapMap(); @@ -60,7 +62,7 @@ class ClassLoaderPtrVectorImpl : public ClassLoaderDependency { public: ClassLoaderPtrVector class_loader_ptrs_; - std::recursive_mutex loader_mutex_; + std::mutex loader_mutex_; }; class MultiLibraryClassLoaderImpl @@ -68,7 +70,6 @@ class MultiLibraryClassLoaderImpl public: bool enable_ondemand_loadunload_; LibraryToClassLoaderMap active_class_loaders_; - std::mutex loader_mutex_; }; ClassLoaderPtrVectorImpl & getClassLoaderPtrVectorImpl() @@ -124,7 +125,7 @@ bool MultiLibraryClassLoader::isLibraryAvailable(const std::string & library_nam void MultiLibraryClassLoader::loadLibrary(const std::string & library_path) { if (!isLibraryAvailable(library_path)) { - std::lock_guard lock(getClassLoaderPtrVectorImpl().loader_mutex_); + std::lock_guard lock(getClassLoaderPtrVectorImpl().loader_mutex_); getClassLoaderPtrVectorImpl().class_loader_ptrs_.emplace_back( std::make_shared(library_path, isOnDemandLoadUnloadEnabled()) ); @@ -148,7 +149,7 @@ int MultiLibraryClassLoader::unloadLibrary(const std::string & library_path) remaining_unloads = loader->unloadLibrary(); if (remaining_unloads == 0) { impl_->active_class_loaders_[library_path] = nullptr; - std::lock_guard lock(getClassLoaderPtrVectorImpl().loader_mutex_); + std::lock_guard lock(getClassLoaderPtrVectorImpl().loader_mutex_); auto & class_loader_ptrs = getClassLoaderPtrVectorImpl().class_loader_ptrs_; for (auto iter = class_loader_ptrs.begin(); iter != class_loader_ptrs.end(); ++iter) { if (iter->get() == loader) {