首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

小弟我的POCO C++库学习 - 任务

2013-03-01 
我的POCO C++库学习 -- 任务我的POCO C库学习 -- 任务1. 任务的定义任务虽然在Poco::Foundation库的目录结

我的POCO C++库学习 -- 任务
我的POCO C++库学习 -- 任务


1. 任务的定义

        任务虽然在Poco::Foundation库的目录结构中被单独划出,其实也可以被看成线程的应用,放在线程章节。首先来看一下Poco中对于任务的描述:

task主要应用在GUI和Seerver程序中,用于追踪后台线程的进度。应用Poco任务时,需要类Poco::Task和类Poco::TaskManager配合使用。其中类Poco::Task继承自Poco::Runnable,它提供了接口可以便利的报告线程进度。Poco::TaskManager则对Poco::Task进行管理。为了完成取消和上报线程进度的工作:                  a. 使用者必须从Poco::Task创建一个子类并重写runTask()函数
                  b. 为了完成进度上报的功能,在子类的runTask()函数中,必须周期的调用setProgress()函数去上报信息
                  c. 为了能够在任务运行时终止任务,必须在子类的runTask()函数中,周期性的调用isCancelled()或者sleep()函数,去检查是否有任务停止请求
                  d. 如果isCancelled()或者sleep()返回真,runTask()返回。
Poco::TaskManager通过使用Poco::NotificationCenter 去通知所有需要接受任务消息的对象        从上面描述可以看出,Poco中Task的功能就是能够自动汇报线程运行进度。


2. 任务用例

        Task的应用非常简单,下面是其一个使用例子:


        在类图中,我们可以看到Task类继承自RefCountedObject,这主要是为了Task类的管理。TaskManger对Task实现了自动的垃圾收集。


(版权所有,转载时请注明作者和出处)

热点排行