00001 /* 00002 * Copyright (C) 2009, Edmundo Albuquerque de Souza e Silva. 00003 * 00004 * This file may be distributed under the terms of the Q Public License 00005 * as defined by Trolltech AS of Norway and appearing in the file 00006 * LICENSE.QPL included in the packaging of this file. 00007 * 00008 * THIS FILE IS PROVIDED AS IS WITH NO WARRANTY OF ANY KIND, INCLUDING 00009 * THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR 00010 * PURPOSE. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, 00011 * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING 00012 * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, 00013 * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION 00014 * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 00015 * 00016 * Thanks: Jose Renato Santos 00017 * 00018 */ 00019 00020 /////////////////////////////////////////////////////////////////// 00021 // RioMutex.h: interface for the CMutex class. 00022 /////////////////////////////////////////////////////////////////// 00023 00024 #if !defined __MUTEX_H_ 00025 #define __MUTEX_H_ 00026 00027 #ifndef WINDOWS 00028 #include <pthread.h> 00029 #include "RioUnix.h" 00030 #endif 00031 00032 class CMutex 00033 { 00034 private: 00035 #ifdef WINDOWS 00036 /* WINDOWS32 implementation */ 00037 HANDLE m_handle; 00038 #else 00039 /* UNIX implementation */ 00040 pthread_mutex_t m_mutex; 00041 #endif 00042 00043 bool m_isopen; 00044 00045 public: 00046 bool IsOpen(); 00047 void Release(); 00048 void Wait(); 00049 CMutex(); 00050 virtual ~CMutex(); 00051 }; 00052 00053 #endif // __RIOMUTEX_H_