상속 받으시고 다음과 같이 사용하시면 됩니다.
Lock();
try
{
... 수행할 동기화 코드
}
__finally
{
Unlock();
}
----- 헤더 입니다. -----
#ifndef unitZSynchronizeH
#define unitZSynchronizeH
#include <Classes.hpp>
class TZSynchronize
{
public:
TZSynchronize();
virtual ~TZSynchronize();
protected:
_RTL_CRITICAL_SECTION FLock;
public:
void Lock() { EnterCriticalSection(&FLock); }
void Unlock() { LeaveCriticalSection(&FLock); }
int getLockCount() { return FLock.LockCount; }
};
#endif
----- 소스 입니다. -----
#pragma hdrstop
////
#include "unitZSynchronize.h"
#pragma package(smart_init)
TZSynchronize::TZSynchronize(void)
{
InitializeCriticalSection(&FLock);
}
TZSynchronize::~TZSynchronize(void)
{
while( FLock.LockCount != -1 )
{
Sleep(0);
}
Lock();
try
{
}
__finally
{
Unlock();
DeleteCriticalSection(&FLock);
}
}
|