From 42689e83efae088119a82f3151f306fa1d59dc36 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Mon, 26 Feb 2007 11:23:55 +0000 Subject: [PATCH] Removed ReentrantMutex --- src/osgDB/ReentrantMutex.cpp | 151 ----------------------------------- 1 file changed, 151 deletions(-) delete mode 100644 src/osgDB/ReentrantMutex.cpp diff --git a/src/osgDB/ReentrantMutex.cpp b/src/osgDB/ReentrantMutex.cpp deleted file mode 100644 index a0ef6d867..000000000 --- a/src/osgDB/ReentrantMutex.cpp +++ /dev/null @@ -1,151 +0,0 @@ -/* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2006 Robert Osfield - * - * This library is open source and may be redistributed and/or modified under - * the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or - * (at your option) any later version. The full license is in LICENSE file - * included with this distribution, and on the openscenegraph.org website. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * OpenSceneGraph Public License for more details. -*/ - -#include -#include - -#include - -using namespace osgDB; -using namespace OpenThreads; - -ReentrantMutex::ReentrantMutex(): - _threadHoldingMutex(0), - _lockCount(0) -{ -} - -ReentrantMutex::~ReentrantMutex() -{ -} - -int ReentrantMutex::lock() -{ - if (_threadHoldingMutex==OpenThreads::Thread::CurrentThread() && _lockCount>0) - { - OpenThreads::ScopedLock lock(_lockCountMutex); - ++_lockCount; - return 0; - } - else - { - int result = Mutex::lock(); - if (result==0) - { - OpenThreads::ScopedLock lock(_lockCountMutex); - - _threadHoldingMutex = OpenThreads::Thread::CurrentThread(); - _lockCount = 1; - } - return result; - } -} - -int ReentrantMutex::unlock() -{ - OpenThreads::ScopedLock lock(_lockCountMutex); -#if 0 - if (_threadHoldingMutex==OpenThreads::Thread::CurrentThread() && _lockCount>0) - { - --_lockCount; - if (_lockCount<=0) - { - _threadHoldingMutex = 0; - return Mutex::unlock(); - } - } - else - { - osg::notify(osg::NOTICE)<<"Error: ReentrantMutex::unlock() - unlocking from the wrong thread."<0) - { - --_lockCount; - if (_lockCount<=0) - { - _threadHoldingMutex = 0; - return Mutex::unlock(); - } - } -#endif - return 0; -} - -int ReentrantMutex::trylock() -{ - if (_threadHoldingMutex==OpenThreads::Thread::CurrentThread() && _lockCount>0) - { - OpenThreads::ScopedLock lock(_lockCountMutex); - ++_lockCount; - return 0; - } - else - { - int result = Mutex::trylock(); - if (result==0) - { - OpenThreads::ScopedLock lock(_lockCountMutex); - - _threadHoldingMutex = OpenThreads::Thread::CurrentThread(); - _lockCount = 1; - } - return result; - } -} - -ReadWriteMutex::ReadWriteMutex(): - _readCount(0) -{ -} - -ReadWriteMutex::~ReadWriteMutex() -{ -} - -int ReadWriteMutex::readLock() -{ - OpenThreads::ScopedLock lock(_readCountMutex); - int result = 0; - if (_readCount==0) - { - result = _readWriteMutex.lock(); - } - ++_readCount; - return result; -} - -int ReadWriteMutex::readUnlock() -{ - OpenThreads::ScopedLock lock(_readCountMutex); - int result = 0; - if (_readCount>0) - { - --_readCount; - if (_readCount==0) - { - result = _readWriteMutex.unlock(); - } - } - return result; -} - -int ReadWriteMutex::writeLock() -{ - return _readWriteMutex.lock(); -} - -int ReadWriteMutex::writeUnlock() -{ - return _readWriteMutex.unlock(); -}