注意ACE_Pipe的实现

来源:互联网 发布:爱知时计科技 编辑:程序博客网 时间:2024/05/05 05:01
 

7               注意ACE_Pipe的实现

ACE_Pipe是一个跨平台的管道实现。标准情况来讲,采用的实现,但是在最大的两个平台WindowsLinux上,ACE的实现是采用的Socket实现。

int

ACE_Pipe::open (int buffer_size)

{

  ACE_TRACE ("ACE_Pipe::open");

 

#if defined (ACE_LACKS_SOCKETPAIR) || defined (__Lynx__)

 

  //绑定了一个本地端口,0.0.0.0,然后找到相应的端口,用于后面的链接

  if (acceptor.open (local_any) == -1

      || acceptor.get_local_addr (my_addr) == -1)

    result = -1;

  else

    {

        // Establish a connection within the same process.

      if (connector.connect (writer, sv_addr) == -1)

        result = -1;

  ……

所以很多管道特性所特有的东西,在这两个平台上是无法使用ACE_Pipe实现的。比如,管道的特性可以保证在暂时没有接受者的情况下使用,而Socket是不可能有这个特性的。你必须保证先有接受者,后有发送者的时序。

所以在这些平台上最好不用这个封装。
原创粉丝点击