#include "CRXMutex.h" CRXMutex::CRXMutex (void) { #ifdef _WIN32 mMutex = NULL; #endif } CRXMutex::~CRXMutex (void) { this->Unlock (); this->Destroy (); #ifdef _WIN32 #else #endif } int CRXMutex::Create (void) { #ifdef _WIN32 if ((mMutex = ::CreateMutexA (NULL, FALSE, NULL)) == NULL) return GetLastError (); else return 0; #else return pthread_mutex_init (&mMutex, NULL); #endif } int CRXMutex::Destroy (void) { #ifdef _WIN32 if (::CloseHandle (mMutex)) return GetLastError (); else return 0; #else return pthread_mutex_destroy (&mMutex); #endif } void CRXMutex::Lock (void) { #ifdef _WIN32 ::WaitForSingleObject (mMutex, INFINITE); #else pthread_mutex_lock (&mMutex); #endif } void CRXMutex::Unlock (void) { #ifdef _WIN32 if (mMutex != NULL) ::ReleaseMutex(mMutex); #else pthread_mutex_unlock (&mMutex); #endif }