add asserts to ClassLevelLockable
git-svn-id: svn://svn.code.sf.net/p/loki-lib/code/trunk@179 7ec92016-0320-0410-acc4-a06ded1c099a
This commit is contained in:
parent
1237efed14
commit
dddd95d48d
1 changed files with 13 additions and 10 deletions
|
@ -138,17 +138,22 @@ namespace Loki
|
||||||
struct Initializer
|
struct Initializer
|
||||||
{
|
{
|
||||||
CRITICAL_SECTION mtx_;
|
CRITICAL_SECTION mtx_;
|
||||||
bool init;
|
bool init_;
|
||||||
|
|
||||||
Initializer()
|
Initializer()
|
||||||
{
|
{
|
||||||
::InitializeCriticalSection(&mtx_);
|
init();
|
||||||
init=true;
|
|
||||||
}
|
}
|
||||||
~Initializer()
|
~Initializer()
|
||||||
{
|
{
|
||||||
assert( init );
|
assert( init_ );
|
||||||
::DeleteCriticalSection(&mtx_);
|
::DeleteCriticalSection(&mtx_);
|
||||||
}
|
}
|
||||||
|
void init()
|
||||||
|
{
|
||||||
|
::InitializeCriticalSection(&mtx_);
|
||||||
|
init_=true;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static Initializer initializer_;
|
static Initializer initializer_;
|
||||||
|
@ -164,20 +169,18 @@ namespace Loki
|
||||||
public:
|
public:
|
||||||
Lock()
|
Lock()
|
||||||
{
|
{
|
||||||
assert( initializer_.init );
|
assert( initializer_.init_ );
|
||||||
/*if(!initializer_.init)
|
//if(!initializer_.init_) initializer_.init();
|
||||||
::InitializeCriticalSection(&initializer_.mtx_);
|
|
||||||
*/
|
|
||||||
::EnterCriticalSection(&initializer_.mtx_);
|
::EnterCriticalSection(&initializer_.mtx_);
|
||||||
}
|
}
|
||||||
explicit Lock(const ClassLevelLockable&)
|
explicit Lock(const ClassLevelLockable&)
|
||||||
{
|
{
|
||||||
assert( initializer_.init );
|
assert( initializer_.init_ );
|
||||||
::EnterCriticalSection(&initializer_.mtx_);
|
::EnterCriticalSection(&initializer_.mtx_);
|
||||||
}
|
}
|
||||||
~Lock()
|
~Lock()
|
||||||
{
|
{
|
||||||
assert( initializer_.init );
|
assert( initializer_.init_ );
|
||||||
::LeaveCriticalSection(&initializer_.mtx_);
|
::LeaveCriticalSection(&initializer_.mtx_);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue