线程管理:ACE 的同步和线程管理机制学习

类别:编程语言 点击:0 评论:0 推荐:

ACE_Thread_Mutex类.

锁和锁适配器(LockAdapter)用于动态绑定

令牌(Token):ACE_Token类提供所谓的“递归互斥体”,它可以被最初获得它的同一线程进行多次重新获取。ACE_Token类还确保所有试图获取它的线程按严格的FIFO(先进先出)顺序排序。

ACE守卫(Guard)类属:它是这样工作的:对象的构造器获取锁,析构器释放锁。(类似于VC/MFC的CSingleLock)

ACE条件(Condition)类属:

使用ACE_Thread::join()调用可以使主线程等待其他的线程结束。另一种达到同样目的的方法是使用条件变量,它使主线程在退出之前等待“所有线程已经结束”条件为真。

ACE中的栅栏(Barrier):一组线程可以使用栅栏来进行共同的相互同步。组中的每个线程各自执行,直到到达栅栏,就阻塞在那里。在所有相关线程到达栅栏后,它们就全部继续它们的执行。就是说,它们一个接一个地阻塞,等待其他的线程到达栅栏;一旦所有线程都到达了它们的执行路径中的“栅栏点”,它们就一起重新启动。

原子操作ACE_Atomic_Op类用于将同步透明地参数化进基本的算术运算中。

ACE_THREAD_MANAGER进行线程管理.

线程专有存储(ThreadSpecificStorage)。在ACE中,TSS通过使用ACE_TSS模板类来实现。需要成为线程专有的类被传入ACE_TSS模板,然后可以使用C++的->操作符来调用它的全部公共方法。尽可能使用线程专有存储有若干好处。如果全局或静态数据可放在线程专有存储中,就可将同步所导致的开销降到最低。这是使用TSS的主要好处。

主动对象.ACE_Task是ACE中的任务或主动对象“处理结构”的基类。ACE_Task可用作:更高级的线程(我们称之为任务)或主动对象模式中的主动对象。
要创建任务或主动对象,你必须从ACE_Task类派生子类。使用ACE_Furure对象作为ACE_Task方法调用的返回值。ACE_Future类的使用确保多线程的访问控制——对象在没有被主动对象的任务完成之前不能使用。

本文地址:http://com.8s8s.com/it/it27705.htm