Poco::Event
来源:互联网 发布:java点击按钮触发事件 编辑:程序博客网 时间:2024/06/05 11:50
Poco::Event是用于多线程之间的同步,其wait调用会阻塞一个线程的执行,当其他线程对此事件set操作后,此线程会继续运行。事件有两种,一种是自动复位,另一种是手动复位。
Event类
默认构造函数是自动复位,wait用于阻塞一个线程,set后,wait返回;自动复位中,不需要reset。
自动复位状态图
自动复位中,当多个线程阻塞在同一个Event时,只有一个可以返回,其他的,继续阻塞。
手动复位状态图
手动复位中,当set了,阻塞于这个Event的所有线程都可以再继续运行,并且可以多次通过这个Event的wait调用。直到reset为止。
demo
#include "Poco/Event.h"#include "Poco/Thread.h"using Poco::Event;using Poco::Thread;class EventRunnable:public Runnable{public: EventRunnable(Event& ea,Event& eh):m_EventAuto(ea),m_EventHandle(eh) { } void run() { std::cout << "Enter Thread." << std::endl; m_EventAuto.wait(); std::cout << "Through wait 1." << std::endl; m_EventAuto.wait(); std::cout << "Through wait 2." << std::endl; m_EventHandle.wait(); m_EventHandle.wait(); std::cout << "Through wait 3." << std::endl; }private: Event& m_EventAuto; Event& m_EventHandle;};int main(){ Event ea; Event eh(false); EventRunnable r(ea,eh); Thread t; t.start(r); Thread::sleep(200); ea.set(); Thread::sleep(200); ea.set(); Thread::sleep(200); eh.set(); t.join(); return 0;}
- Poco::Event
- poco 2:Event
- c++ poco Event 源码剖析
- c++ poco Event测试用例
- POCO中Event同步对象的POSIX实现
- POCO
- Poco::Path & Poco::File
- 【Poco】Poco vs Boost
- Poco::Base64Encoder,Poco::Base64Decoder
- 【Poco】Poco vs Boost
- Poco::format & Poco::NumberFormatter & Poco::NumberParser
- Poco简介
- POCO c++
- Poco::NestedDiagnosticContext
- Poco::Ascii
- Poco::Bugcheck
- Poco::ByteOrder
- Poco::MemoryPool
- 基于Tomcat开发Portlet
- string,CString,char *的比较
- oracle安装错误解决
- Android开发中可能遇到的问题
- Eclipse中启动Tomcat出现错误A docBase E:/Tomcat/webapps/lovemu inside the host appBase has been specified
- Poco::Event
- 报表数据如何使用关联数据集
- lucene 核心类
- 8月18
- poj 3671 Dining Cows
- 测试Service
- HTML 的 form 提交之前如何验证数值不为空? 为空的话提示用户并终止提交
- eclipse和MyEclipse里面查看框架源码的方法
- jdbc连接驱动器的注册加载