ACE 提供了一个好的包装ACE_Acceptor(是作为Acceptor-Connect Pattern 实现提供的)
但是比较重,有的时候我们需要自己做这件事,用reactor来驱动我们的sock_acceptor。
这个时候有几点需要注意的:
1、先sock_acceptor.open, 后enable(ACE_NONBLOCK)
2、因该用ACCEPT_MASK来注册
3、CLOSE的过程比较特殊,必须要先从reactor上remove,才可以有效的sock_acceptor.close,这也许是因为passive socket 正在被select的时候无法有效的close.
4、不要企望先sock_acceptor.close, 让后让reactor发现,进入handle_input,然后accept(peer) fail, 之后顺利的close,这是不可能的。