ACE的陷阱 http://docs.huihoo.com/ace_tao/ace-trap.htm
文档 http://www.dre.vanderbilt.edu/ , 如http://www.dre.vanderbilt.edu/Doxygen/Stable/libace-doc/inherits.html
在opendiameter中有xml库的应用实例。
进程通信:
socket、TLI、STREAM管道和FIFO为访问局部和全局IPC机制提供广泛的接口,分别为ACE_SOCK,ACE_TLI,ACE_SPIPE,ACE_FIFO。
Transport Layer Interface (TLI)是 AT&T UNIX System V 提供的网络接口,相当于BSD sockets编程接口。TLI被标准化为XTI,即X/Open Transport Interface。TLI基于OSI模型中传输层设计,API类似socket。
ACE_INET_Addr有多种初始化方式,如explicit ACE_INET_Addr (u_short port_number, ACE_UINT32 ip_addr = INADDR_ANY);
ACE_SOCK_Acceptor构造函数时需指定ACE_INET_Addr;
同步原语:
在ACE中,锁通常用模板来参数化,因为,在大多数情况下,使用虚函数调用的开销都是不可接受的。
ACE Lock类属:
ACE_Recursive_Thread_Mutex --- 同一线程可以递归调用。
ACE_Recursive_Thread_Mutex _Lock;
ACE_Condition_Recursive_Thread_Mutex
ACE_Token
在任何继承层次中,这些类都是互不关联的。在ACE中,锁通常用模板来参数化.
ACE_Lock
ACE_Lock_Adapter -- 使用适配器模式。采用模板实现。
template <class ACE_LOCKING_MECHANISM>
class ACE_Lock_Adapter : public ACE_Lock
ACE Guard类属:自动获取和释放锁。
ACE_Guard<ACE_Recursive_Thread_Mutex> g(this->_Lock);
ACE_Guard
自动在底层锁上调用acquire()和release()。任何ACE Lock类属中的锁都可以作为它的模板参数传入。
ACE_Read_Guard
自动在底层锁上调用acquire()和release()。
ACE_Write_Guard
自动在底层锁上调用acquire()和release()。
ACE Condition类属: 特定条件已经满足的指示器。
杂项ACE Synchronization类:
ACE_Barrier:所有线程都调用wait,都处理完到达wait后再继续执行;
ACE_Atomic_Op是一种模板类,锁定机制和需要参数化的类型被作为参数传入其中。
如ACE_Atomic_Op<ACE_Thread_Mutex,int> foo;
内存管理
基于ACE_Allocator(virtual动态绑定)的内存分配器 --- 动态内存分配。灵活;慢;
- ACE_Allocator
- ACE_Static_Allocator
- ACE_Cached_Allocator --- RT系统使用。template <class T, class ACE_LOCK>class ACE_Cached_Allocator; T为内存池中内存的类型。
- ACE_New_Allocator
ACE_Malloc模板类 --- 动态内存分配,共享内存分配
- ACE含有一个适配器模板类ACE_Allocator_Adapter,它将ACE_Malloc类适配到ACE_Allocator接口。
- template <class MALLOC>class ACE_Allocator_Adapter : public ACE_Allocator;
- 内存使用方式:
# define ACE_MMAP_MEMORY_POOL ACE_MMAP_Memory_Pool# define ACE_LITE_MMAP_MEMORY_POOL ACE_Lite_MMAP_Memory_Pool# define ACE_SBRK_MEMORY_POOL ACE_Sbrk_Memory_Pool# define ACE_SHARED_MEMORY_POOL ACE_Shared_Memory_Pool# define ACE_LOCAL_MEMORY_POOL ACE_Local_Memory_Pool# define ACE_PAGEFILE_MEMORY_POOL ACE_Pagefile_Memory_Pool
SSL
ACE_SSL_Context::instance()->load_trusted_ca
ACE_SSL_Context::instance()->have_trusted_ca()
线程专有存储
- ACE_TSS 模板类
- ACE_TSS_Type_Adapter, This seems to work better:
ACE_TSS<ACE_TSS_Type_Adapter<int> > i; i->operator int & () = 37; ACE_OS::fprintf (stderr, "%d\n", i->operator int ());
主动对象
这些对象持有它们自己的线程(甚或多个线程),并将这个线程用于执行对它们的任何方法的调用。
ACE_Task 模板类
open
close
activate 激活的线程个数
svn
线程管理
- ACE_Thread中的所有方法都是静态的,如ACE_Thread::spawn_n,spawn,jion等
- ACE_Thread_Manager,如
- ACE_Thread_Manager::instance()->spawn_n
- ACE_Thread_Manager::instance()->wait_grp
ACE_Future的实现:(ACE_Future实现了单写多读模式,可以用来异步方法调用的结果返回)
- ACE_Future_Rep<T>::set
// Signal all the waiting threads.return this->value_ready_ .broadcast ();
- ACE_Future_Rep<T>::get
if (this->value_ready_ .wait (tv) == -1)