I/O多路转接-鸿鹄论坛_华为认证h35-211-hcnp-access network题库
12.5 I/O多路转接当从一个描述符读,然后又写到另一个描述符时,可以在下列形式的循环中使用阻塞I/O: while ((n=read(STDIN_FILENO, buf, BUFSIZ)) > 0) if (write (STDOUT_FILENO, buf, n) != n) err_sys (write error);这种形式的阻塞I/O到处可见。但是如果必须读两个描述符又将如何呢?如果仍旧使用阻塞I/O,那么就可能长时间阻塞在一个描述符上,而另一个描述符虽有很多数据却不能得到及时处理。所以为了处理这种情况显然需要另一种不同的技术。让我们概略地观察一个调制解调器拨号程序的工作情况(该程序将在第18章中介绍)。该程序读终端(标准输入),将所得数据写到调制解调器上;同时读调制解调器,将所得数据写到终端上(标准输出)。
在I/O多路复用的场景中,阻塞I/O的限制使得程序的效率和响应能力大大降低。为了提高系统的性能和灵活性,非阻塞I/O技术成为了一种重要的选择。非阻塞I/O允许程序在读取或写入时不会一直等待操作完成,而是可以处理其他任务,这样就可以在多个I/O操作之间高效切换,避免资源的浪费。
了解更多关于I/O多路复用和非阻塞I/O的具体实现,可以参考以下资源:
-
Linux设备驱动中的阻塞与非阻塞I O 提供了详细的Linux设备驱动中阻塞与非阻塞I/O的实现方式和使用场景,帮助开发者更好地理解如何在实际项目中应用这些技术。
-
详解socket阻塞与非阻塞同步与异步I O模型 深入介绍了socket编程中阻塞与非阻塞、同步与异步I/O模型的区别和优劣,适合网络编程初学者和进阶者阅读。
-
echo多路I O的客户端 提供了一个实际的echo客户端示例,通过该示例可以直观地看到多路I/O在客户端程序中的应用。
- Java非阻塞I O使用方法 对Java开发者来说,这是一个非常实用的资源,详细介绍了Java中如何实现和使用非阻塞I/O。