Main Page | Modules | Class Hierarchy | Class List | File List | Class Members | Related Pages

Mutex.h

00001 /***************************************************************************** 00002 * Author: Vadim Zeitlin <vadim@wxwidgets.org> 00003 * 00004 ***************************************************************************** 00005 * Copyright (c) 2004 Vadim Zeitlin 00006 * 00007 * This library is free software; you can distribute it and/or modify it under 00008 * the terms of the GNU Lesser General Public License (LGPL), as published by 00009 * the Free Software Foundation; either version 2.1 of the License, or (at your 00010 * option) any later version. 00011 * 00012 * This library is distributed in the hope that it will be useful, but WITHOUT 00013 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 00014 * FITNESS FOR A PARTICULAR PURPOSE. See the LGPL in the file COPYING for more 00015 * details. 00016 * 00017 */ 00018 00019 #ifndef _Mutex_incl_ 00020 #define _Mutex_incl_ 00021 00022 #include <rlog/common.h> 00023 00024 #ifdef _WIN32 00025 #include <windows.h> 00026 // conflict with our own ERROR... 00027 #undef ERROR 00028 00029 typedef CRITICAL_SECTION rlog_mutex_t; 00030 #define rlog_mutex_init InitializeCriticalSection 00031 #define rlog_mutex_destroy DeleteCriticalSection 00032 #define rlog_mutex_lock EnterCriticalSection 00033 #define rlog_mutex_unlock LeaveCriticalSection 00034 #else 00035 #include <pthread.h> 00036 00037 typedef pthread_mutex_t rlog_mutex_t; 00038 #define rlog_mutex_init(m) pthread_mutex_init((m), 0) 00039 #define rlog_mutex_destroy pthread_mutex_destroy 00040 #define rlog_mutex_lock pthread_mutex_lock 00041 #define rlog_mutex_unlock pthread_mutex_unlock 00042 #endif 00043 00044 namespace rlog 00045 { 00053 class RLOG_DECL Mutex 00054 { 00055 public: 00056 Mutex() { rlog_mutex_init(&m_mutex); } 00057 ~Mutex() { rlog_mutex_destroy(&m_mutex); } 00058 00059 void Lock() { rlog_mutex_lock(&m_mutex); } 00060 void Unlock() { rlog_mutex_unlock(&m_mutex); } 00061 00062 private: 00063 rlog_mutex_t m_mutex; 00064 00065 Mutex( const Mutex & ); 00066 Mutex & operator = ( const Mutex & ); 00067 }; 00068 } // namespace rlog 00069 00070 #endif // _Mutex_incl_ 00071

Generated on Wed Dec 8 22:52:02 2004 for rlog by doxygen 1.3.8