1.与System V的消息队列模型不同
ACE_Message_Queue的模型是仿照System V streams提供的排队设施设计的,但是与System V排队设施不同,使用ACE的排队设施,可以在单个进程中进行高效的线程间通信,但是没有提供用于进程间通信的排队设施。
2.基于traits策略的类的设计
为了实现线程安全,经常要实现多种版本的库,多线程库、单线程库,这样会给库的维护与开发带来很多问题,而在ACE中经常看到ACE_<ACE_XXX>这种用法,ACE_XXX类代表的是一系列的宏定义,这些宏决定了使用哪种策略。例如消息队列的使用要public ACE_Task<ACE_MT_SYNCH>而参数ACE_MT_SYNCH的定义如下:
class ACE_Export ACE_MT_SYNCH
{
public:
typedef ACE_Thread_Mutex MUTEX;
typedef ACE_Null_Mutex NULL_MUTEX;
typedef ACE_Process_Mutex PROCESS_MUTEX;
typedef ACE_Recursive_Thread_Mutex RECURSIVE_MUTEX;
typedef ACE_RW_Thread_Mutex RW_MUTEX;
typedef ACE_Condition_Thread_Mutex CONDITION;
typedef ACE_Condition_Recursive_Thread_Mutex RECURSIVE_CONDITION;
typedef ACE_Thread_Semaphore SEMAPHORE;
typedef ACE_Nul
ACE_Message_Queue的模型是仿照System V streams提供的排队设施设计的,但是与System V排队设施不同,使用ACE的排队设施,可以在单个进程中进行高效的线程间通信,但是没有提供用于进程间通信的排队设施。
2.基于traits策略的类的设计
为了实现线程安全,经常要实现多种版本的库,多线程库、单线程库,这样会给库的维护与开发带来很多问题,而在ACE中经常看到ACE_<ACE_XXX>这种用法,ACE_XXX类代表的是一系列的宏定义,这些宏决定了使用哪种策略。例如消息队列的使用要public ACE_Task<ACE_MT_SYNCH>而参数ACE_MT_SYNCH的定义如下:
class ACE_Export ACE_MT_SYNCH
{
public:
typedef ACE_Thread_Mutex MUTEX;
typedef ACE_Null_Mutex NULL_MUTEX;
typedef ACE_Process_Mutex PROCESS_MUTEX;
typedef ACE_Recursive_Thread_Mutex RECURSIVE_MUTEX;
typedef ACE_RW_Thread_Mutex RW_MUTEX;
typedef ACE_Condition_Thread_Mutex CONDITION;
typedef ACE_Condition_Recursive_Thread_Mutex RECURSIVE_CONDITION;
typedef ACE_Thread_Semaphore SEMAPHORE;
typedef ACE_Nul