From bb04751571f1d1f2bc4b2bbdc2ed69379d7b335b Mon Sep 17 00:00:00 2001 From: Fabio Erculiani Date: Wed, 9 Jun 2010 17:30:38 +0200 Subject: [PATCH] [entropy.core.settings.base] SystemSettings: add sane multithreading support --- libraries/entropy/core/settings/base.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/libraries/entropy/core/settings/base.py b/libraries/entropy/core/settings/base.py index 950e9f12e..b657cea9c 100644 --- a/libraries/entropy/core/settings/base.py +++ b/libraries/entropy/core/settings/base.py @@ -60,6 +60,8 @@ class SystemSettings(Singleton, EntropyPluginStore): from entropy.core.settings.plugins.factory import get_available_plugins self.__get_external_plugins = get_available_plugins + from threading import RLock + self.__lock = RLock() from entropy.cache import EntropyCacher self.__cacher = EntropyCacher() self.__data = {} @@ -260,13 +262,15 @@ class SystemSettings(Singleton, EntropyPluginStore): """ dict method. See Python dict API reference. """ - return self.__data[mykey] + with self.__lock: + return self.__data[mykey] def __delitem__(self, mykey): """ dict method. See Python dict API reference. """ - del self.__data[mykey] + with self.__lock: + del self.__data[mykey] def __iter__(self): """ @@ -371,9 +375,10 @@ class SystemSettings(Singleton, EntropyPluginStore): @return None """ - self.__data.clear() - self.__setup_const() - self.__scan() + with self.__lock: + self.__data.clear() + self.__setup_const() + self.__scan() def set_persistent_setting(self, persistent_dict): """