南桥JAVA基础

 多路复用 1、概念 假设:在单进程与单线程情况下,应用程序要同时处理多路IO流(多个设备) 如果在应用程序中采用while(1) { read() ... }进行处理,那么每次只能处理一个设备,其他设备有请求时,则会被延迟,甚至丢失数据。如果在一个设备处理中阻塞,则不会接着执行,也不能处理其他设备的数据。因此,可以采用多路复用的方法:select 、 poll   阻塞模式下会有两种情况



多路复用

1、概念

假设:在单进程与单线程情况下,应用程序要同时处理多路IO流(多个设备)

如果在应用程序中采用while(1) { read() ... }进行处理,那么每次只能处理一个设备,其他设备有请求时,则会被延迟,甚至丢失数据。如果在一个设备处理中阻塞,则不会接着执行,也不能处理其他设备的数据。因此,可以采用多路复用的方法:select 、 poll

  阻塞模式下会有两种情况:等待 、对数据进行操作。多路复用就是实现了等待的动作。

南桥JAVA基础java多路复用模型_#include

2、多路复用的思想

  —先构造一张有关描述符的表,然后调用一个函数(select/poll)。当这些文件描述符中的一个或多个已经准备好进行IO时,函数才返回。

  —函数返回时,告诉进程那个描述符已经就绪,可以进行IO操作。 

3、实现步骤

  1. 把关心的文件描述符加入到fd_set集合中
  2. 调用select / poll函数去监控集合fd_set中的文件描述符(阻塞等待集合中一个或多个文件描述符有数据)
  3. 当有数据时,退出select()阻塞
  4. 依次判断哪个文件描述符有数据
  5. 依次处理有数据的文件描述符的数据

4、poll的应用

5、在驱动代码中实现poll接口

  如果应用中使用poll对设备文件进行了监控,那么设备驱动就必须实现poll接口

6、示例--多路复用poll实现

java多路复用模型_#include_02

java多路复用模型_#include_03

key_drv.c

java多路复用模型_#include_02

java多路复用模型_#include_03

key_test.c

java多路复用模型_java多路复用模型_06

小讯
上一篇 2024-12-23 15:41
下一篇 2024-12-23 15:41

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/989.html