I/O多路复用的应用场合疑问?

发布于 2022-09-03 09:08:15 字数 235 浏览 16 评论 0

RT

现在的I/O多路复用是应用在服务器与客户端之间吧,两者通过socket通信。

可是为什么我看有些资料是以用户线程和内核来举例子,难道用户线程和内核之间也用socket进行通信?要用到I/O多路复用?

还有就是安卓手机应该也用不到I/O多路复用吧,它又不会当服务器用。

我的理解是eploll() select()这些函数只会出现在服务器端程序上,就连客户端上都不会有,不知道我的理解对不对?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

执手闯天涯 2022-09-10 09:08:15

你的想法是IO多路复用的一个方面,也是网络编程中非常重要的一方面。但不是全部,而是将其作用减小了。

1:IO多路复用说白了就是:允许我们一次同时检测多个文件描述符,看其中的一个是否执行IO操作。
2:既然它检测的是文件描述符,就是fd,而Linux下一切皆是文件,就是说除了socket,还有普通文件,终端,管道等这些都可以被检测。因为它们被用户操作都是通过fd
3:用户线程和内核之间当然不是通过socket通信,但是内核可以采用IO多路复用的方式同时监控一个线程打开的文件描述符,然后同时做IO处理,操作系统启动后那么多线程,每个默认可以打开1024个文件,为了提高效率,用IO多路复用当然好。

所以,IO多路复用是一种高效策略,应用于网络编程只是因为我们可以默认把socket当作普通文件处理罢了。

十年九夏 2022-09-10 09:08:15

如果不多路IO复用,相当于每个socket都起一个线程或者fork一个进程来处理,显然不划算,对于多客户端的服务器简直就无法工作了。
多路IO复用的对象就是线程和进程等计算资源,多路复用需要内核提供支持,不同实现方式比如select, poll, epoll在不同情况下在内核的开销不一样,所以会涉及到内核。

客户端如果有多个连接要处理,或者想有可控的阻塞时间的话,用select也很常见。

浅忆流年 2022-09-10 09:08:15

源自http://www.jianshu.com/p/1020...
文中着重点在于异步通信

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文