免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 9132 | 回复: 5
打印 上一主题 下一主题

[函数] 学习socket编程被卡在select 和poll函数! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-05-09 09:36 |只看该作者 |倒序浏览
学习steven大师的unix network programming ,前面几章的内容都很好理解,什么listen, socket, accept等都很easy理解。
可是到了介绍select , poll函数时候,俺却怎么都不理解了,连为什么要用select, poll这两个函数和这两个函数干么用的俺都没法理解。


大侠们帮俺说说select, poll函数。

论坛徽章:
0
2 [报告]
发表于 2007-04-22 11:40 |只看该作者
up 关注

论坛徽章:
0
3 [报告]
发表于 2007-04-22 12:09 |只看该作者
从词义来说,select 和 poll 是基本相同的,表示 “选择”、“选举” 等含义。
这两个系统调用的主要功能是提供多路 I/O 复用的支持。默认情况下,Unix 采用同步 I/O,如果一个操作被阻塞,那么程序将停滞在 I/O 调用上。多路复用可以有效解决这个问题。
另外,poll() 还有一个功能:如果传入的文件描述符指针是 NULL,那么这个调用可以当作定时器,精确到毫秒一般是没有问题的。

论坛徽章:
0
4 [报告]
发表于 2007-04-22 15:07 |只看该作者
如上所说,就是可以在单线程的环境中处理多个socket句柄。

论坛徽章:
0
5 [报告]
发表于 2008-02-13 03:21 |只看该作者
原帖由 langue 于 2007-4-22 12:09 发表
从词义来说,select 和 poll 是基本相同的,表示 “选择”、“选举” 等含义。
这两个系统调用的主要功能是提供多路 I/O 复用的支持。默认情况下,Unix 采用同步 I/O,如果一个操作被阻塞,那么程序将停滞在 I ...



select也可以用作定时器吧?

论坛徽章:
0
6 [报告]
发表于 2008-02-13 14:37 |只看该作者
select可以在同一个进程中监视若干个IO,对于read,recv等阻塞型调用如果没有需要的数据,它们会一直阻塞,如果程序里面有不止一个这样的IO,对于每个IO可能需要开辟一个进程或者线程来专门处理,而使用select就不必,使用select,系统定时向被监听的设备扫描,如果发现已经准备好读或者写,则通知应用程序进行处理,从而使程序结构看起来更加简单。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP