12#ifndef TT_INCLUDE__CRITICALSECTIONCLASS_H
13#define TT_INCLUDE__CRITICALSECTIONCLASS_H
17#include "ThreadClass.h"
21class SCRIPTS_API CriticalSectionClass
36 CriticalSectionClass& CriticalSection;
40 LockClass(CriticalSectionClass& section);
42 LockClass operator=(LockClass&);
46 CriticalSectionClass();
47 ~CriticalSectionClass();
54class FastCriticalSectionClass
59 friend class LockClass;
66 TT_ASSERT((
size_t)&Flag % 4 == 0);
69 if (_interlockedbittestandset(&Flag, 0) == 0)
return;
85 FastCriticalSectionClass& criticalSection;
87 LockClass& operator=(
const LockClass&)
95 LockClass(FastCriticalSectionClass& _criticalSection) :
96 criticalSection(_criticalSection)
98 criticalSection.Enter();
103 criticalSection.Leave();
108 FastCriticalSectionClass() :