ACE_Task封装了任务,每个任务都含有一或多个线程,以及一个底层消息队列。各个任务通过这些消息队列进行通信。
其主要成员如下:
open():初始化资源
close():释放资源
activate():启动线程,可指定线程的数目
svc():线程的启动位置
putq():放置消息到任务的消息队列中
getq():从任务的消息队列中取出消息
thr_count():返回任务中线程的数目
last_thread():返回任务中将线程计数器从1降为0的线程的ID
...
PS: 由于ACE_Task对象一般是在堆中创建的,因此必须要进行释放操作.
{
public:
virtualintopen(void*args=0)
{
activate(THR_NEW_LWP,1);
return0;
}
virtualintclose(u_longflags=0)
{
if(ACE_OS::thr_equal(ACE_Thread::self(),this->last_thread()))
{
//释放对象deletethis;
}
return0;
}
virtualintsvc(void)
{
return0;
}
};