add asserts to ClassLevelLockable

git-svn-id: svn://svn.code.sf.net/p/loki-lib/code/trunk@177 7ec92016-0320-0410-acc4-a06ded1c099a
This commit is contained in:
syntheticpp 2005-07-26 14:30:17 +00:00
parent bd319aeaaa
commit c3da9552e6

View file

@ -11,6 +11,8 @@
// Last update: June 20, 2001 // Last update: June 20, 2001
#include <cassert>
#ifndef DEFAULT_THREADING #ifndef DEFAULT_THREADING
#define DEFAULT_THREADING /**/ ::Loki::SingleThreaded #define DEFAULT_THREADING /**/ ::Loki::SingleThreaded
#endif #endif
@ -136,13 +138,15 @@ namespace Loki
struct Initializer struct Initializer
{ {
CRITICAL_SECTION mtx_; CRITICAL_SECTION mtx_;
bool init;
Initializer() Initializer()
{ {
::InitializeCriticalSection(&mtx_); ::InitializeCriticalSection(&mtx_);
init=true;
} }
~Initializer() ~Initializer()
{ {
assert( init );
::DeleteCriticalSection(&mtx_); ::DeleteCriticalSection(&mtx_);
} }
}; };
@ -160,14 +164,20 @@ namespace Loki
public: public:
Lock() Lock()
{ {
assert( initializer_.init );
/*if(!initializer_.init)
::InitializeCriticalSection(&initializer_.mtx_);
*/
::EnterCriticalSection(&initializer_.mtx_); ::EnterCriticalSection(&initializer_.mtx_);
} }
explicit Lock(const ClassLevelLockable&) explicit Lock(const ClassLevelLockable&)
{ {
assert( initializer_.init );
::EnterCriticalSection(&initializer_.mtx_); ::EnterCriticalSection(&initializer_.mtx_);
} }
~Lock() ~Lock()
{ {
assert( initializer_.init );
::LeaveCriticalSection(&initializer_.mtx_); ::LeaveCriticalSection(&initializer_.mtx_);
} }
}; };
@ -199,6 +209,7 @@ namespace Loki
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// Change log: // Change log:
// June 20, 2001: ported by Nick Thurn to gcc 2.95.3. Kudos, Nick!!! // June 20, 2001: ported by Nick Thurn to gcc 2.95.3. Kudos, Nick!!!
// July 26, 2005: some asserts by Peter Kümmel
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
#endif #endif