线程管理 ACE_Thread_Manager




ACE中实现线程池需要用到主动对象ACE_Task,而掌握ACE_Task的用法,需现了解ACE_Thread_Manager, ACE_Reactor, ACE_Message_Queue。
 
线程管理 ACE_Thread_Manager
1 特点: 屏蔽操作系统的差异,成员方法采用内联来减少调用开销;所有方法为static。
 
2 封装了线程的操作。创建spawn/spawn_n, 挂起suspend/suspend_grp, 取消cancel_all/cancel_task, 连接join, 杀死kill, 获取线程号thr_self等操作。
 
3 局限:spawn/spawn_n要求线程处理函数必须是静态的或全局的。
 
4 线程标志:THR_NEW_LWP|THR_JOINABLE
 
例子:
int n_threads= 10;
//number of threads to spawn
ACE_thread_t *threadID = new ACE_thread_t[n_threads+1];
ACE_hthread_t *threadHandles = new ACE_hthread_t[n_threads+1];
if(ACE_Thread::spawn_n(threadID, //id’s for each of the threads
    n_threads, //number of threads to spawn
    (ACE_THR_FUNC)worker, //线程工作函数,必须是静态的或全局的
    0, //args to worker
    THR_JOINABLE | THR_NEW_LWP, //flags
    ACE_DEFAULT_THREAD_PRIORITY,
    0, 0, threadHandles)==-1)
{
    ACE_DEBUG((LM_DEBUG,"Error in spawning thread\n"));
}
 
//等待所有线程结束
for(int i=0; i<n_threads; i++)
{
    ACE_Thread::join(threadHandles[i]);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值