ACE中线程的实现原理

这篇博客探讨了ACE框架中线程的实现原理,包括ACE_Thread的静态函数如spawn_n用于创建线程,ACE_Task_Base作为任务或主动对象的基类,需要重写svc方法并激活,ACE_Thread_Adapter作为适配器类,以及ACE_Thread_Manager如何管理线程,通过线程描述符存储线程信息并进行操作。
摘要由CSDN通过智能技术生成
1.ACE中对线程的封装
1.1ACE_Thread实现原理
ACE_Thread 提供了对OS 的线程调用的简单包装,这些调用处理线程创建、挂起、取消和删除等问题。它提供给应用程序员一个简单易用的接口,可以在不同的线程API 间移植。ACE_Thread 是非常“瘦”的包装,有着很少的开销。其大多数方法都是内联的,因而等价于对底层OS 专有线程接口的直接调用。ACE_Thread 中的所有方法都是静态的,而且该类一般不进行实例化。
ACE_Thread类中的几个重要的静态函数:
1)建立线程:
size_t spawn_n (size_t n,
                         ACE_THR_FUNC func,
                         void *arg = 0,
                         long flags = THR_NEW_LWP | THR_JOINABLE,
                         long priority = ACE_DEFAULT_THREAD_PRIORITY,
                         void *stack[] = 0,
                         size_t stack_size[] = 0,
                         ACE_Thread_Adapter *thread_adapter = 0)
     {
         …
         for (i = 0; i < n; i++)
         // Bail out if error occurs.
              if (ACE_OS::thr_create (func,
                            arg,
                            flags,
                            &t_id,
                            0,
                            priority,
                            stack == 0 ? 0 : stack[i],
                            stack_size == 0 ? 0 : stack_size[i],
                            thread_adapter) != 0)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值