服务器端 - I/O多路复用的应用场合疑问?
本文介绍了服务器端 - 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屋!
查看全文