WSAEventSelect比较靠谱的使用方法

4490阅读 0评论2011-05-09 pagx
分类:WINDOWS

废话不多说,看下面的例子,比较比较。
方式一、目前大部分初学者使用方式。
fd1 = socket
event1 = newEvent
wsaeventselect(fd1, event1, xxxx)
fd2 = socket
event2 = newEvent
wsaeventselect(fd2, event2, xxxx)

for ( ; ; ) {
index = waitformultiobjects(event1, event2)
process event for index.
}


方式二。

w_event = newEvent;
fd1 = socket
wsaeventselect(fd1, w_event, xxxx)
fd2 = socket
wsaeventselect(fd1, w_event, xxxx)

waitforsingleobject(w_event)

for (fd int {fd1, fd2} )
{
    if (WSAEnumEvents(fd)) {
         do some thing.
    }
}

简单的说,第二种比第一种的好处是, 允许使用超过 64  的socket句柄. 而不需要作复杂的手段。且跟传统的 select 没有太大的区别,性能也没啥提升。


上一篇:完成端口(IOCP)使用的一点想法
下一篇:更新MiniXmppClient,加入端口转发功能(可以公网传文件)。