怎样把ACE_Task当作更高级的线程来使用

怎样把ACE_Task当作更高级的线程来使用

2009-01-02 18:02
#include "ace/OS.h"
#include "ace/Task.h"  
class TaskOne: public ACE_Task<ACE_MT_SYNCH> {
public:
//Implement the Service Initialization and Termination methods
int open(void*)
{
ACE_DEBUG((LM_DEBUG,"(%t) Active Object opened /n"));  
//Activate the object with a thread in it.
activate();  
return 0;  
}
 
int close(u_long)
{
ACE_DEBUG((LM_DEBUG, "(%t) Active Object being closed down /n"));
return 0;
}
 
int svc(void)
{
ACE_DEBUG((LM_DEBUG,
"(%t) This is being done in a separate thread /n"));
 
// do thread specific work here
//.......
//.......
return 0;
}
};
 
int main(int argc, char *argv[])
{
//Create the task
TaskOne *one=new TaskOne;  
//Start up the task
one->open(0);  
//wait for all the tasks to exit
ACE_Thread_Manager::instance()->wait();
ACE_DEBUG((LM_DEBUG,"(%t) Main Task ends /n"));
}
 
上面的例子演示怎样把ACE_Task当作更高级的线程来使用。在例子中,TaskOne类派生自ACE_Task,
并实现了 open()、close()和 svc()方法。在此任务对象实例化后,程序就调用它的 open()方法。该方法依次
调用 activate()方法,致使一个新线程被派生和启动。该线程的入口是 svc()方法。主线程等待主动对象线
程终止,然后就退出进程。
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值