// Copyright (C) 2010 Vicente Botet // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) #include #include #include class boostThreadLocksTest { public: boost::shared_mutex myMutex; //boost::upgrade_lock myLock; static int firstFunction(boostThreadLocksTest *pBoostThreadLocksTest); static int secondFunction(boostThreadLocksTest *pBoostThreadLocksTest, boost::upgrade_lock& upgr); boostThreadLocksTest() :myMutex() //, myLock(myMutex,boost::defer_lock_t()) {} }; int boostThreadLocksTest::firstFunction(boostThreadLocksTest *pBoostThreadLocksTest) { std::cout<<"Entering "< myLock(pBoostThreadLocksTest->myMutex); pBoostThreadLocksTest->secondFunction(pBoostThreadLocksTest, myLock); std::cout<<"Returned From Call "<& upgr) { std::cout<<"Before Exclusive Locking "< localUniqueLock(upgr); std::cout<<"After Exclusive Locking "<