10 #ifndef _LOG4CPP_THREADING_MSTHREADS_HH
11 #define _LOG4CPP_THREADING_MSTHREADS_HH
20 # define NOGDI // this will circumvent the ERROR #define in windows.h
21 # define LOG4CPP_UNDEFINE_NOGDI
24 # ifndef WIN32_LEAN_AND_MEAN
25 # define WIN32_LEAN_AND_MEAN
26 # define LOG4CPP_UNDEFINE_WIN32_LEAN_AND_MEAN
31 # ifdef LOG4CPP_UNDEFINE_NOGDI
35 # ifdef LOG4CPP_UNDEFINE_WIN32_LEAN_AND_MEAN
36 # undef WIN32_LEAN_AND_MEAN
39 #endif // done dealing with ERROR #define
55 MSMutex() { InitializeCriticalSection(&_criticalSection); }
56 ~MSMutex() { DeleteCriticalSection(&_criticalSection); }
58 return &_criticalSection;
63 CRITICAL_SECTION _criticalSection;
69 typedef MSMutex
Mutex;
79 EnterCriticalSection(_criticalSection);
86 LPCRITICAL_SECTION _criticalSection;
101 template<
typename T>
class ThreadLocalDataHolder {
113 inline T*
get()
const {
114 return (T*)TlsGetValue(_key);
139 T* result = (T*)TlsGetValue(_key);
140 TlsSetValue(_key, NULL);
151 T* thing = (T*)TlsGetValue(_key);
153 TlsSetValue(_key, p);