Chinaunix首页 | 论坛 | 博客
  • 博客访问: 902991
  • 博文数量: 201
  • 博客积分: 8078
  • 博客等级: 中将
  • 技术积分: 2162
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-20 17:22
文章分类

全部博文(201)

文章存档

2013年(3)

2012年(11)

2011年(34)

2010年(25)

2009年(51)

2008年(77)

分类: WINDOWS

2011-05-09 18:02:43

废话不多说,看下面的例子,比较比较。
方式一、目前大部分初学者使用方式。
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 没有太大的区别,性能也没啥提升。


阅读(4347) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~