`
xugangqiang
  • 浏览: 8361 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

IO的4种方式

 
阅读更多

Blocking IO

{

byte[] buffer = ...

read(socket, buffer); // blocking

process(buffer);

}

 

Non blocking (Sync) IO 

{

byte[] buffer = ...

while ( read(socket, buffer) != 'succeed' ) ; // non blocking but sync

process (buffer);

}

 

Multiplexing blocking IO (blocking, sync or async?, to the socket processing thread, it's sync; to the invoking client, it's async)

{

register(socket);

while (true) {

    sockets = select();// blocking until data is ready for read

    for (s : sockets) {

         if (can_read(s) ) {

            // data is ready, will not be blocked

            read(s, buffer);

            process(buffer);

         }

    }

}

}

 

4. Async Non blocking

{

    register(socket, handleBuffer);

}

 

handleBuffer(buffer) {

    // process

}

 

分享到:
评论

相关推荐

    8进8出与4进4出串口IO模块控制卡相关资料.rar

    在工业自动化领域,串口通信是一种常见的数据传输方式,尤其在小型控制系统中,因其简单、实用的特点被广泛应用。本文将详细解析"8进8出与4进4出串口IO模块控制卡相关资料",主要关注MODBUS协议下的IO板卡通讯。 8...

    统一编址与独立编址 IO端口与IO内存

    统一编址是一种将内存和 IO 设备统一编址的方式,也就是说,CPU 使用同一个地址空间来访问内存和 IO 设备。在这种方式下,内存和 IO 设备共享同一个地址空间,CPU 可以使用同一个指令来访问内存和 IO 设备。 独立...

    基恩士下IO-Link配置方式.zip_IO-link_io link_基恩士 iolink_基恩士IO—LINK_基恩士远程I

    IO-Link是一种开放式、标准化的通信协议,专为工业自动化中的传感器和执行器设计。它在设备层上提供了一个简单的点对点连接,允许设备与控制器之间进行双向通信,从而实现参数设置、诊断和状态监控等功能。基恩士,...

    Linux内核访问外设IO资源的方式.pdf

    ### Linux内核访问外设IO资源的方式 #### 一、概述 在Linux内核中,为了能够有效地控制和管理各种外部设备(例如SRAM、硬件接口寄存器等),需要将这些外设的I/O资源映射到内核空间中。通常来说,Linux内核支持两...

    Linux文件IO跟标准IO总结

    首先,我们从基本概念出发,理解这两种IO方式。 **文件IO**是Linux系统中最常见的IO模型,它基于系统调用接口,如`open()`, `read()`, `write()`, `close()`等。文件IO允许程序直接与文件系统交互,执行打开、读取...

    采用标准键盘芯片和IO扫描混合方式的键盘原理图和PCb

    “IO扫描”是一种常用的键盘扫描技术,它通过CPU或微控制器的输入/输出端口逐行或逐列扫描键盘矩阵。在混合方式下,一部分键盘行由标准键盘芯片管理,而另一部分由CPU的IO端口进行扫描。这种方式的优点在于,可以...

    PlatformIO 离线安装资源

    它提供了一种统一的、跨平台的方式来管理编译、调试和上传固件到各种微控制器,如ESP32和ESP8266。在本资源包中,你将找到离线安装PlatformIO的所需文件,这对于没有稳定网络连接或希望提高工作效率的开发者来说非常...

    KUKA机器人KR C4标准控制柜IO输入输出模块接线方法和组态步骤.docx

    通过这种方式,可以确保IO模块的输入输出信号被系统正确识别和使用。 总的来说,正确配置和接线KUKA KR C4控制柜的IO模块是确保机器人系统与外部设备通信顺畅的关键。这不仅涉及硬件连接,还包括软件层面的配置。...

    socket.io,socket.io-client下载

    4. **断线重连**:Socket.IO自动处理网络中断情况,当网络恢复时,它会尝试重新连接到服务器,确保通信的连续性。 5. **心跳检测**:为了检测连接是否仍然活跃,Socket.IO实现了心跳机制,通过发送心跳包来确认连接...

    两个IO控制六个键盘

    文件“两条IO,接六个按键的电路和程序.jpg”很可能是展示了这种电路的布局和连接方式,而“两条IO,接六个按键的电路和程序.txt”可能包含了实现这一功能的源代码。在电路图中,可以看到六个按键排列成两行三列,每行...

    154-教学课件-IO设备访问方式和类型1

    DMA方式和通道控制方式是IO控制方式的其他两种形式。DMA方式是通过DMA控制器来控制IO设备的传输,而通道控制方式是通过通道来控制IO设备的传输。 IO设备访问方式和类型是计算机系统中一个非常重要的部分,操作系统...

    intouch IOserver 全

    4. 监控界面:Intouch将接收到的PLC数据展示在用户友好的监控界面上,操作员可以通过直观的图形元素进行交互,实现远程操作和监控。 【标签】:“IO server intouch” "IO server"标签强调了Intouch中的IO服务器...

    4位IO线连16键的编码键盘设计(Proteus仿真)

    在这个项目中,我们将探讨如何使用4位IO线连接一个16键的编码键盘,并通过C51编程语言实现中断驱动的方式,实现实时响应按键输入,并在LCD(液晶显示器)上显示按键编码。我们将使用流行的电路模拟软件Proteus进行...

    2个io 实现6个按键检测

    4. `key.Uv2`:这是Keil uVision的一种调试文件,用于在仿真环境中运行和调试程序。 为了深入了解这个解决方案,需要查看`key.c`的源代码,了解具体的实现细节,如IO口的配置、扫描逻辑、按键状态的判断等。如果...

    两个IO口控制三个LED灯

    在本案例中,目标是用两个IO口控制三个LED灯,这涉及到一种叫做“位操作”的技巧。位操作是处理二进制数据的基本方式,可以通过对单个比特位的设定,实现对多个设备的控制。通常,我们可以将一个IO口的输出状态理解...

    Java IO commons-io-2.5.jar

    这个库为开发者提供了更高效、更便捷的方式来执行常见的文件、目录和流操作。 一、Java IO 基础 Java IO 包含了许多类,如InputStream、OutputStream、Reader、Writer等,它们分别用于处理字节流和字符流。字节流...

    draw.io画图工具和一些模板。

    思维导图是一种有效的组织和表达想法的方式,draw.io提供了构建思维导图的强大工具。你可以: 1. **开始中心主题**:在画布中央输入主要的想法或主题。 2. **添加分支**:通过点击“添加形状”并拖动到中心主题旁边...

    3个IO口驱动6个LED

    4. ScienceProg的文章《Connect 6 LEDs Using 3 Microcontroller Pins》(http://www.scienceprog.com/connect-6-leds-using-3-microcontroller-pins/),以更简单易懂的方式解释了如何使用3个IO口驱动6个LED。...

    commons-io-1.4.jar.zip_io流jar

    Java的IO流系统是一个强大的工具,它提供了一种统一的方式来处理不同类型的数据源和目的地。本文将深入探讨Java的IO流机制,并重点介绍Apache Commons IO库中的`commons-io-1.4.jar`,它为Java的IO操作提供了许多...

Global site tag (gtag.js) - Google Analytics