⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 recmutextest.cpp

📁 ICE-3.2 一个开源的中间件
💻 CPP
字号:
// **********************************************************************//// Copyright (c) 2003-2007 ZeroC, Inc. All rights reserved.//// This copy of Ice is licensed to you under the terms described in the// ICE_LICENSE file included in this distribution.//// **********************************************************************#include <IceUtil/IceUtil.h>#include <RecMutexTest.h>#include <TestCommon.h>using namespace std;using namespace IceUtil;static const string recMutexTestName("recursive mutex");class RecMutexTestThread : public Thread{public:        RecMutexTestThread(RecMutex& m) :        _mutex(m),        _tryLock(false)    {    }    virtual void run()    {                RecMutex::TryLock tlock(_mutex);        test(!tlock.acquired());                {            Mutex::Lock lock(_tryLockMutex);            _tryLock = true;        }        _tryLockCond.signal();        RecMutex::Lock lock(_mutex);    }    void    waitTryLock()    {        Mutex::Lock lock(_tryLockMutex);        while(!_tryLock)        {            _tryLockCond.wait(lock);        }    }private:    RecMutex& _mutex;    bool _tryLock;    //    // Use native Condition variable here, not Monitor.    //    Cond _tryLockCond;    Mutex _tryLockMutex;};typedef Handle<RecMutexTestThread> RecMutexTestThreadPtr;RecMutexTest::RecMutexTest() :    TestBase(recMutexTestName){}voidRecMutexTest::run(){    RecMutex mutex;    RecMutexTestThreadPtr t;    ThreadControl control;    {        RecMutex::Lock lock(mutex);                // TEST: lock twice        RecMutex::Lock lock2(mutex);        // TEST: TryLock        RecMutex::TryLock lock3(mutex);        test(lock3.acquired());                // TEST: Start thread, try to acquire the mutex.        t = new RecMutexTestThread(mutex);        control = t->start();                // TEST: Wait until the tryLock has been tested.        t->waitTryLock();            }    //    // TEST: Once the recursive mutex has been released, the thread    // should acquire the mutex and then terminate.    //    control.join();   }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -