ACE_Thread_Manager

//Spawn the first set of threads that work on task 1.

if(ACE_Thread_Manager::instance()->spawn_n(num_task_1,

(ACE_THR_FUNC)taskone,//Execute task one

0, //No arguments

THR_NEW_LWP, //New Light Weight Process

ACE_DEFAULT_THREAD_PRIORITY,

1)==-1) //Group ID is 1

ACE_ERROR((LM_ERROR,

"Failure to spawn first group of threads: %p \n"));

 

//Spawn second set of threads that work on task 2.

if(ACE_Thread_Manager::instance()->spawn_n(num_task_2,

(ACE_THR_FUNC)tasktwo,//Execute task one


在ACE中,TSS通过使用ACE_TSS模板类来实现。需要成为线程专有的类被传入ACE_TSS模板,然后可以使用C++的->操作符来调用它的全部公共方法。
ACE_TSS<DataType> data;
static void* thread1(void*)

{

data->set(10);

ACE_DEBUG((LM_DEBUG,"(%t)The value of data is %d \n",data->get()));

for(int i=0;i<5;i++)

data->increment();

ACE_DEBUG((LM_DEBUG,"(%t)The value of data is %d \n",data->get()));

return 0;

}

0, //No arguments

THR_NEW_LWP, //New Light Weight Process

ACE_DEFAULT_THREAD_PRIORITY,

2)==-1)//Group ID is 2

ACE_ERROR((LM_ERROR,

"Failure to spawn second group of threads: %p \n"));

 

//Wait for all tasks in grp 1 to exit

ACE_Thread_Manager::instance()->wait_grp(1);

ACE_DEBUG((LM_DEBUG,"Tasks in group 1 have exited! Continuing \n"));

 

//Wait for all tasks in grp 2 to exit

ACE_Thread_Manager::instance()->wait_grp(2);

 

ACE_DEBUG((LM_DEBUG,"Tasks in group 2 have exited! Continuing \n"));
[b]
thr_mgr->suspend_grp (grp_id)
thr_mgr->resume_grp (grp_id)
thr_mgr->resume_grp (grp_id) == -1
thr_mgr->wait ();[/b]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值