diff options
Diffstat (limited to 'src/thread_win32.cpp')
-rw-r--r-- | src/thread_win32.cpp | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/thread_win32.cpp b/src/thread_win32.cpp index 0cb2825af..882dea9ca 100644 --- a/src/thread_win32.cpp +++ b/src/thread_win32.cpp @@ -93,3 +93,37 @@ private: if (thread != NULL) *thread = to; return true; } + +/** + * Win32 thread version of ThreadMutex. + */ +class ThreadMutex_Win32 : public ThreadMutex { +private: + CRITICAL_SECTION critical_section; + +public: + ThreadMutex_Win32() + { + InitializeCriticalSection(&this->critical_section); + } + + /* virtual */ ~ThreadMutex_Win32() + { + DeleteCriticalSection(&this->critical_section); + } + + /* virtual */ void BeginCritical() + { + EnterCriticalSection(&this->critical_section); + } + + /* virtual */ void EndCritical() + { + LeaveCriticalSection(&this->critical_section); + } +}; + +/* static */ ThreadMutex *ThreadMutex::New() +{ + return new ThreadMutex_Win32(); +} |