一动不如一静

C++博客 首页 新随笔 联系 聚合 管理
  20 Posts :: 0 Stories :: 10 Comments :: 0 Trackbacks
这篇内容来自c++网络编程卷1 第七章 ACE同步事件分离封装.

                                                              Sidebar 14: Motivation for Nonblocking Acceptors

         当把一个Acceptor socket传递给select(),如果收到一个链接,那么该socket被标识为激活状态.很多服务器利用这个事件去表明可以调用accept(),不会引起阻塞.不幸的是,有来自TCP/IP异步行为的资源竞争.在实际中,select()之后就表明一个acceptor socket是激活的(但是在accept()调用之前),client可以关闭它的连接,一旦accept()阻塞潜在的挂起整个进程.为了避免这个问题,acceptor socket当和select()一起使用的时候,应该一直被设置为非阻塞的模式.在ACE中,这步工作很方便,只要传递ACE_NONBLOCK标识给enable()方法就可以了.enable()方法是ACE_IPC_SAP提供的,所以ACE_SOCK_Acceptor也拥有.
posted on 2006-06-12 11:18 一动不如一静 阅读(586) 评论(0)  编辑 收藏 引用 所属分类: ACE

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理