diff --git a/include/loki/Threads.h b/include/loki/Threads.h index 43f7f4e..962f542 100644 --- a/include/loki/Threads.h +++ b/include/loki/Threads.h @@ -140,20 +140,16 @@ namespace Loki CRITICAL_SECTION mtx_; bool init_; - Initializer() - { - init(); - } - ~Initializer() - { - assert( init_ ); - ::DeleteCriticalSection(&mtx_); - } - void init() + Initializer():init_(false) { ::InitializeCriticalSection(&mtx_); init_=true; } + ~Initializer() + { + assert(init_); + ::DeleteCriticalSection(&mtx_); + } }; static Initializer initializer_; @@ -169,18 +165,17 @@ namespace Loki public: Lock() { - assert( initializer_.init_ ); - //if(!initializer_.init_) initializer_.init(); - ::EnterCriticalSection(&initializer_.mtx_); + assert(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_); } };