![]() |
Mutex.cppGo to the documentation of this file.00001 00005 /* 00006 Copyright (C) 2004-2007 Anders Hedstrom 00007 00008 This library is made available under the terms of the GNU GPL. 00009 00010 If you would like to use this library in a closed-source application, 00011 a separate license agreement is available. For information about 00012 the closed-source license agreement for the C++ sockets library, 00013 please visit http://www.alhem.net/Sockets/license.html and/or 00014 email license@alhem.net. 00015 00016 This program is free software; you can redistribute it and/or 00017 modify it under the terms of the GNU General Public License 00018 as published by the Free Software Foundation; either version 2 00019 of the License, or (at your option) any later version. 00020 00021 This program is distributed in the hope that it will be useful, 00022 but WITHOUT ANY WARRANTY; without even the implied warranty of 00023 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00024 GNU General Public License for more details. 00025 00026 You should have received a copy of the GNU General Public License 00027 along with this program; if not, write to the Free Software 00028 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 00029 */ 00030 #include "Mutex.h" 00031 00032 #ifdef SOCKETS_NAMESPACE 00033 namespace SOCKETS_NAMESPACE { 00034 #endif 00035 00036 00037 Mutex::Mutex() 00038 { 00039 #ifdef _WIN32 00040 m_mutex = ::CreateMutex(NULL, FALSE, NULL); 00041 #else 00042 pthread_mutex_init(&m_mutex, NULL); 00043 #endif 00044 } 00045 00046 00047 Mutex::~Mutex() 00048 { 00049 #ifdef _WIN32 00050 ::CloseHandle(m_mutex); 00051 #else 00052 pthread_mutex_destroy(&m_mutex); 00053 #endif 00054 } 00055 00056 00057 void Mutex::Lock() 00058 { 00059 #ifdef _WIN32 00060 DWORD d = WaitForSingleObject(m_mutex, INFINITE); 00062 #else 00063 pthread_mutex_lock(&m_mutex); 00064 #endif 00065 } 00066 00067 00068 void Mutex::Unlock() 00069 { 00070 #ifdef _WIN32 00071 ::ReleaseMutex(m_mutex); 00072 #else 00073 pthread_mutex_unlock(&m_mutex); 00074 #endif 00075 } 00076 00077 00078 #ifdef SOCKETS_NAMESPACE 00079 } 00080 #endif |