c++ poco Event测试用例

来源:互联网 发布:手机借款软件排行 编辑:程序博客网 时间:2024/06/11 06:30

1.说明

  Poco库Event类可以用作线程间的超时判断,linux下内部实现基于线程锁和条件变量机制。

2.代码

#include <iostream>#include "Poco/Thread.h"#include "Poco/Runnable.h"#include "Poco/Event.h"Poco::Event gEVENT;class SimpleClassOfSetEvent : public Poco::Runnable{public:    void run()    {        Poco::Thread::sleep(2000);    /// 2s        std::cout<<"Set Event Succeed."<<std::endl;        gEVENT.set();    }};class SimpleClassOfWaitEvent : public Poco::Runnable{public:    void run()    {        if(gEVENT.tryWait(4000))    /// 4s        {            std::cout<<"Wait Event Success."<<std::endl;        }        else        {            std::cout<<"Time Out."<<std::endl;        }    }};int main(){    /// SimpleClassOfSetEvent类完成消息的set操作逻辑实现,延时2秒执行    SimpleClassOfSetEvent cSetEvent;    /// SimpleClassOfWaitEvent类完成消息的wait操作逻辑实现,超时时间4秒    SimpleClassOfWaitEvent cWaitEvent;    Poco::Thread cFirstThread;    Poco::Thread cSecondThread;    /// 启动线程    cFirstThread.start(cSetEvent);    cSecondThread.start(cWaitEvent);    /// 等待线程    cFirstThread.join();    cSecondThread.join();    /// set消息线程在4s超时时间内完成了消息的设定,所以wait消息线程tryWait()判断未超时。    /// 例子中gEVENT设定为全局变量只是为了Poco::Event使用方法的简单展示,真实应用场景一般不会这样使用。    /// 输出:    /// Set Event Succeed.    /// Wait Event Success.    return 0;}
原创粉丝点击