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

📄 workqueue.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 <WorkQueue.h>#include <Ice/LocalException.h>using namespace std;WorkQueue::WorkQueue() :    _done(false){}voidWorkQueue::run(){    IceUtil::Monitor<IceUtil::Mutex>::Lock lock(_monitor);    while(!_done)    {        if(_callbacks.size() == 0)        {            _monitor.wait();        }        if(_callbacks.size() != 0)        {            //            // Get next work item.            //            CallbackEntry entry = _callbacks.front();            //            // Wait for the amount of time indicated in delay to             // emulate a process that takes a significant period of            // time to complete.            //            _monitor.timedWait(IceUtil::Time::milliSeconds(entry.delay));            if(!_done)            {                //                // Print greeting and send response.                //                _callbacks.pop_front();                cout << "Belated Hello World!" << endl;                entry.cb->ice_response();            }        }    }    //    // Throw exception for any outstanding requests.    //    list<CallbackEntry>::const_iterator p;    for(p = _callbacks.begin(); p != _callbacks.end(); ++p)    {        (*p).cb->ice_exception(Demo::RequestCanceledException());    }}void WorkQueue::add(const Demo::AMD_Hello_sayHelloPtr& cb, int delay){    IceUtil::Monitor<IceUtil::Mutex>::Lock lock(_monitor);    if(!_done)    {        //        // Add work item.        //        CallbackEntry entry;        entry.cb = cb;        entry.delay = delay;        if(_callbacks.size() == 0)        {            _monitor.notify();        }        _callbacks.push_back(entry);    }    else    {        //        // Destroyed, throw exception.        //        cb->ice_exception(Demo::RequestCanceledException());    }}voidWorkQueue::destroy(){    IceUtil::Monitor<IceUtil::Mutex>::Lock lock(_monitor);    //    // Set done flag and notify.    //    _done = true;    _monitor.notify();}

⌨️ 快捷键说明

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