convert line ends
[canaan.git] / prj / tech / libsrc / lg / coremutx.cpp
blobd9ae91d6c7b8dd3678a2817672e5bdc2a60d7daa
1 ///////////////////////////////////////////////////////////////////////////////
2 // $Source: x:/prj/tech/libsrc/lg/RCS/coremutx.cpp $
3 // $Author: TOML $
4 // $Date: 1997/07/15 21:29:19 $
5 // $Revision: 1.2 $
6 //
8 #ifdef _WIN32
9 #include <windows.h>
10 #include <coremutx.h>
12 #ifdef __WATCOMC__
13 #pragma initialize 1
14 #else
15 #pragma init_seg (compiler)
16 #endif
18 ///////////////////////////////////////////////////////////////////////////////
20 static int g_MutexInitDepth;
21 CRITICAL_SECTION g_CoreMutex;
23 ///////////////////////////////////////////////////////////////////////////////
25 class cCoreMutexInit
27 public:
28 cCoreMutexInit()
30 CoreMutexInit();
33 ~cCoreMutexInit()
35 CoreMutexTerm();
39 ///////////////////////////////////////
41 static cCoreMutexInit g_CoreMutexInit;
43 ///////////////////////////////////////////////////////////////////////////////
45 extern void CoreMutexInit(void)
47 g_MutexInitDepth++;
48 if (g_MutexInitDepth == 1)
49 InitializeCriticalSection(&g_CoreMutex);
52 ///////////////////////////////////////
54 extern void CoreMutexTerm(void)
56 g_MutexInitDepth--;
57 if (g_MutexInitDepth == 0)
58 DeleteCriticalSection(&g_CoreMutex);
61 ///////////////////////////////////////
63 extern void CoreThreadLock(void)
65 EnterCriticalSection(&g_CoreMutex);
68 ///////////////////////////////////////
70 extern void CoreThreadUnlock(void)
72 LeaveCriticalSection(&g_CoreMutex);
75 ///////////////////////////////////////////////////////////////////////////////
77 #endif