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

📄 alivetest.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 <AliveTest.h>#include <TestCommon.h>using namespace std;using namespace IceUtil;static const string createTestName("thread alive");class CondVar : public IceUtil::Monitor<IceUtil::RecMutex>{public:    CondVar() :        _done(false)    {    }    void waitForSignal()    {        IceUtil::Monitor<IceUtil::RecMutex>::Lock lock(*this);        while(!_done)        {            wait();        }    }    void signal()    {        IceUtil::Monitor<IceUtil::RecMutex>::Lock lock(*this);        _done = true;        notify();    }private:    bool _done;};class AliveTestThread : public Thread{public:    AliveTestThread(CondVar& childCreated, CondVar& parentReady) :        _childCreated(childCreated), _parentReady(parentReady)    {    }    virtual void run()    {        try        {           _childCreated.signal();           _parentReady.waitForSignal();        }        catch(IceUtil::ThreadLockedException &)        {        }    }private:    CondVar& _childCreated;    CondVar& _parentReady;};typedef Handle<AliveTestThread> AliveTestThreadPtr;AliveTest::AliveTest() :    TestBase(createTestName){}voidAliveTest::run(){    //    // Check that calling isAlive() returns the correct result for alive and    // and dead threads.    //    CondVar childCreated;    CondVar parentReady;    AliveTestThreadPtr t = new AliveTestThread(childCreated, parentReady);    IceUtil::ThreadControl c = t->start();    childCreated.waitForSignal();    test(t->isAlive());    parentReady.signal();    c.join();    test(!t->isAlive());}

⌨️ 快捷键说明

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