From dddd95d48d5d241595687ff06c4ccbe7b586f0c3 Mon Sep 17 00:00:00 2001 From: syntheticpp Date: Tue, 26 Jul 2005 15:11:48 +0000 Subject: [PATCH] add asserts to ClassLevelLockable git-svn-id: svn://svn.code.sf.net/p/loki-lib/code/trunk@179 7ec92016-0320-0410-acc4-a06ded1c099a --- include/loki/Threads.h | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/include/loki/Threads.h b/include/loki/Threads.h index 9d5d2ad..43f7f4e 100644 --- a/include/loki/Threads.h +++ b/include/loki/Threads.h @@ -138,17 +138,22 @@ namespace Loki struct Initializer { CRITICAL_SECTION mtx_; - bool init; + bool init_; + Initializer() { - ::InitializeCriticalSection(&mtx_); - init=true; + init(); } ~Initializer() { - assert( init ); + assert( init_ ); ::DeleteCriticalSection(&mtx_); } + void init() + { + ::InitializeCriticalSection(&mtx_); + init_=true; + } }; static Initializer initializer_; @@ -164,20 +169,18 @@ namespace Loki public: Lock() { - assert( initializer_.init ); - /*if(!initializer_.init) - ::InitializeCriticalSection(&initializer_.mtx_); - */ + assert( initializer_.init_ ); + //if(!initializer_.init_) initializer_.init(); ::EnterCriticalSection(&initializer_.mtx_); } explicit Lock(const ClassLevelLockable&) { - assert( initializer_.init ); + assert( initializer_.init_ ); ::EnterCriticalSection(&initializer_.mtx_); } ~Lock() { - assert( initializer_.init ); + assert( initializer_.init_ ); ::LeaveCriticalSection(&initializer_.mtx_); } };