00001 /*******************************************************************\ 00002 00003 Copyright (C) 2004 Joseph Coffland 00004 00005 This program is free software; you can redistribute it and/or 00006 modify it under the terms of the GNU General Public License 00007 as published by the Free Software Foundation; either version 2 00008 of the License, or (at your option) any later version. 00009 00010 This program is distributed in the hope that it will be useful, 00011 but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00013 GNU General Public License for more details. 00014 00015 You should have received a copy of the GNU General Public License 00016 along with this program; if not, write to the Free Software 00017 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 00018 02111-1307, USA. 00019 00020 For information regarding this software email 00021 jcofflan@users.sourceforge.net 00022 00023 \*******************************************************************/ 00024 #ifndef BASICLOCKABLE_H 00025 #define BASICLOCKABLE_H 00026 00027 #include <pthread.h> 00028 00029 #ifdef BASICLOCKABLE_DEBUG 00030 #include <iostream> 00031 #endif 00032 00035 00041 class BasicLockable { 00042 protected: 00043 pthread_mutex_t mutex; 00044 00045 public: 00046 BasicLockable(); 00047 ~BasicLockable(); 00048 00050 void lock() { 00051 #ifdef BASICLOCKABLE_DEBUG 00052 std::cout << "Basiclockable::lock()" << std::endl; 00053 #endif 00054 pthread_mutex_lock(&mutex); 00055 } 00057 void unlock() { 00058 pthread_mutex_unlock(&mutex); 00059 #ifdef BASICLOCKABLE_DEBUG 00060 std::cout << "Basiclockable::unlock()" << std::endl; 00061 #endif 00062 } 00063 }; 00064 #endif // BASICLOCKABLE_H