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;
79 EnterCriticalSection(_criticalSection);
115 inline T*
get()
const {
116 return (T*)TlsGetValue(_key);
141 T* result = (T*)TlsGetValue(_key);
142 TlsSetValue(_key, NULL);
153 T* thing = (T*)TlsGetValue(_key);
155 TlsSetValue(_key, p);
A simple object wrapper around CreateMutex() and DeleteMutex()
MSScopedLock(MSMutex &mutex)
This class holds Thread local data of type T, i.e.
LPCRITICAL_SECTION _criticalSection
A simple object wrapper around WaitForSingleObject() and ReleaseMutex()
CRITICAL_SECTION _criticalSection
static std::string getThreadId()
Return an identifier for the current thread.
boost::mutex Mutex
Dummy type 'int' for Mutex.
boost::mutex::scoped_lock ScopedLock
Dummy type 'int' defintion of ScopedLock;.
T * operator->() const
Obtains the Object held for the current thread.
void reset(T *p=NULL)
Sets a new Object to be held for the current thread.
LPCRITICAL_SECTION getCriticalSection()
T * release()
Releases the Object held for the current thread.
T & operator*() const
Obtains the Object held for the current thread.