ACE(持续更新)

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)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值