Poco中的RunnableAdaptor实现浅析
来源:互联网 发布:北京公交卡充值软件 编辑:程序博客网 时间:2024/04/26 18:03
Poco是一个设计相当好的C++框架库。
RunnableAdaptor,继承自Runnable,提供了注册和执行类成员函数的接口。
Runnable的类定义如下:
这个类设计思想来源JAVA,任何可运行的东西都可以继承自Runnable,只要重写它的run方法。
RunnableAdaptor就是这样一个Runnable,但是它包装了某个类成员函数的注册和执行。也就是说,借用这个RunnableAdaptor就可以执行某个类的成员函数的代码。很有意思。
RunnableAdaptor,继承自Runnable,提供了注册和执行类成员函数的接口。
Runnable的类定义如下:
class Foundation_API Runnable/// The Runnable interface with the run() method/// must be implemented by classes that provide/// an entry point for a thread.{public:Runnable();virtual ~Runnable();virtual void run() = 0;/// Do whatever the thread needs to do. Must/// be overridden by subclasses.};[/c]/// The Runnable interface with the run() method/// must be implemented by classes that provide/// an entry point for a thread.{public:Runnable();virtual ~Runnable();virtual void run() = 0;/// Do whatever the thread needs to do. Must/// be overridden by subclasses.};
这个类设计思想来源JAVA,任何可运行的东西都可以继承自Runnable,只要重写它的run方法。
RunnableAdaptor就是这样一个Runnable,但是它包装了某个类成员函数的注册和执行。也就是说,借用这个RunnableAdaptor就可以执行某个类的成员函数的代码。很有意思。
template <class C>class RunnableAdapter: public Runnable/// This adapter simplifies using ordinary methods as/// targets for threads./// Usage:/// RunnableAdapter<MyClass> ra(myObject, &MyObject::doSomething));/// Thread thr;/// thr.Start(ra);////// For using a freestanding or static member function as a thread/// target, please see the ThreadTarget class.{public:typedef void (C::*Callback)();RunnableAdapter(C& object, Callback method): _pObject(&object), _method(method){}RunnableAdapter(const RunnableAdapter& ra): _pObject(ra._pObject), _method(ra._method){}~RunnableAdapter(){}RunnableAdapter& operator = (const RunnableAdapter& ra){_pObject = ra._pObject;_method = ra._method;return *this;}void run(){(_pObject->*_method)();}private:RunnableAdapter();C* _pObject;Callback _method;};
方法就是提供callback,类似于boost::function。
- Poco中的RunnableAdaptor实现浅析
- 【Poco】Poco::Core中的例子
- 【Poco】Poco::DynamicAny中的例子
- POCO中的TCPServer分析
- POCO中的Task
- POCO中的Socket分析
- POCO中的内存管理
- Poco 线程、任务实现: Poco Task 、Poco Thread
- Poco::Util::TimerTask Poco定时器实现
- POCO中的Thread类分析
- C#实现像讯雷,poco,flashget等下载软件中的任务列表(任务)
- C#实现像讯雷,poco,flashget等下载软件中的任务列表(依次完成任务)
- POCO实现的reactor模式
- POCO
- 关于Entity Framework 学习中的POCO
- 使用 POCO 中的 XMLConfiguration 管理配置文件
- Poco中的task与notification的关系
- poco中的进程使用的纠结
- Unicode与UTF-8/UTF-16/UTF-32的区别
- 5 个步骤保护您的数据传输安全
- JavaScript的单线程性质以及定时器的工作原理
- Android控件之ListView
- 一些测试总结
- Poco中的RunnableAdaptor实现浅析
- 用Detours实现APIHOOK
- How to Get Virtual Desktops on Windows with Dexpot
- TestNG 八 并发测试
- C# Socket TCP 协议接收器
- 记录--嵌套类和局部类
- poj 1426 Find The Multiple (bfs+同余定理)
- paip.从HTML select 获取数据
- android meta-data