ACE的主动线程对象ACE_Task
2014-03-09 15:15
134 查看
ACE_Task对常用线程处理进行了OO包装,属于主动对象模型。
1)实现服务初始化和销毁方法
open()方法包含线程的初始化代码(如连接控制块、锁和内存等资源)。close()方法是相应的销毁方法。
2)线程对象启用(Activation)方法
在主动对象实例化后,你必须通过调用activate()启用它。要在主动对象中创建的线程的数目,以及其他一些参数,被传递给activate()方法。activate()方法会使svc()方法成为所有它生成的线程的启动点。
3)线程对象循环
在主动线程对象被启用后,在svc()方法中开始。子类中重载该函数,处理线程循环。
代码如下:
#include "ace/Task.h"
#include "ace/OS.h"
#include <iostream>
using namespace std;
class TaskThread: public ACE_Task<ACE_MT_SYNCH>
{
public:
virtual int svc(void)
{
for(int i=0;i<10;i++)
{
ACE_OS::sleep(1);
cout<<endl<<"hello thread1"<<endl;
}
return 0;
}
};
int main(int argc, char *argv[])
{
TaskThread task;
task.activate();
while(true)
ACE_OS::sleep(10);
return 0;
}
ACE_Task类型海军包括常用线程操作,如暂停,恢复及停止等方法。
1)实现服务初始化和销毁方法
open()方法包含线程的初始化代码(如连接控制块、锁和内存等资源)。close()方法是相应的销毁方法。
2)线程对象启用(Activation)方法
在主动对象实例化后,你必须通过调用activate()启用它。要在主动对象中创建的线程的数目,以及其他一些参数,被传递给activate()方法。activate()方法会使svc()方法成为所有它生成的线程的启动点。
3)线程对象循环
在主动线程对象被启用后,在svc()方法中开始。子类中重载该函数,处理线程循环。
代码如下:
#include "ace/Task.h"
#include "ace/OS.h"
#include <iostream>
using namespace std;
class TaskThread: public ACE_Task<ACE_MT_SYNCH>
{
public:
virtual int svc(void)
{
for(int i=0;i<10;i++)
{
ACE_OS::sleep(1);
cout<<endl<<"hello thread1"<<endl;
}
return 0;
}
};
int main(int argc, char *argv[])
{
TaskThread task;
task.activate();
while(true)
ACE_OS::sleep(10);
return 0;
}
ACE_Task类型海军包括常用线程操作,如暂停,恢复及停止等方法。
相关文章推荐
- JBoss AS 7.1.1下,从远程客户端使用JNDI调用EJB
- TI的Zstack协议栈SensorDemo例程温度收发
- SSIS从理论到实战,再到应用(1)----创建自己的第一个包
- ZOJ 3603 Draw Something Cheat
- 欢迎大家光顾,我们将成为好伙伴,交流属于我们~
- 02周:项目三扩展:学生成绩管理系统
- Struts2+Hibernate整合应用开发步骤
- (转)协议森林14 逆袭 (CIDR与NAT)
- 【转】HTML5拖拽文件到浏览器并实现文件上传下载
- win7下配置java环境变量
- c# 获取某日期所在周的第一天和最后一天(转)
- android apk包反编译、破解心得
- C/C++编程语言中的基础知识(一)--格式化输入输出
- 浮点数精度误差带来的一个BUG
- 操作系统(8)存储器管理
- Bootstrap3.0入门学习系列规划[持续更新]
- div 的jQuery resize事件
- gpio: sysfs interface
- 马尔科夫随机场Markov Random Field
- QT UI编程细节(待续)