这篇内容来自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也拥有.