服务器端 - I/O多路复用的应用场合疑问?

查看:127
本文介绍了服务器端 - I/O多路复用的应用场合疑问?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

RT

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

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

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

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

解决方案

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

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

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

这篇关于服务器端 - I/O多路复用的应用场合疑问?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆