“全双工“是什么

“全双工”这个词语,我第一次看到的时候,感觉不明觉厉;第二次看到的时候,还是摸不到头脑……

我是在"NIO"这里接触到的“全双工”。

简单记录一下吧。

NIO 主要包括以下三个核心组件:

  • Buffer(缓冲区):NIO 读写数据都是通过缓冲区进行操作的。读操作的时候将 Channel 中的数据填充到 Buffer 中,而写操作时将 Buffer 中的数据写入到 Channel 中。
  • Channel(通道):Channel 是一个双向的、可读可写的数据传输通道,NIO 通过 Channel 来实现数据的输入输出。通道是一个抽象的概念,它可以代表文件、套接字或者其他数据源之间的连接。
  • Selector(选择器):允许一个线程处理多个 Channel,基于事件驱动的 I/O 多路复用模型。所有的 Channel 都可以注册到 Selector 上,由 Selector 来分配线程来处理事件

Channel 是全双工的。在 UNIX 网络编程模型中,底层操作系统的通道都是全双工的,同时支持读写操作。所以Channel 可以比流更好地映射底层操作系统的 API。

全双工是通讯传输的一个术语。通信允许数据在两个方向上同时传输,它在能力上相当于两个单工通信方式的结合。全双工指可以同时(瞬时)进行信号的双向传输(A→B且B→A)。指A→B的同时B→A,是瞬时同步的。

单工的话,一个时间点只能A->B 或者 B->A。现在打电话就是全双工的,多方可以同时喊话聊天。

相关推荐

  1. 什么

    2024-04-06 02:04:05       38 阅读
  2. ChatSDK 语音识别库

    2024-04-06 02:04:05       62 阅读
  3. 智能基础知识总结--什么AdaBoost

    2024-04-06 02:04:05       54 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-06 02:04:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-06 02:04:05       101 阅读
  3. 在Django里面运行非项目文件

    2024-04-06 02:04:05       82 阅读
  4. Python语言-面向对象

    2024-04-06 02:04:05       91 阅读

热门阅读

  1. 【C/C++】数组模拟数据结构

    2024-04-06 02:04:05       38 阅读
  2. 安卓APP的技术质量:如何提高

    2024-04-06 02:04:05       35 阅读
  3. 函数model. addGenConstrMax

    2024-04-06 02:04:05       43 阅读
  4. C# 静态方法的小芝士

    2024-04-06 02:04:05       35 阅读
  5. Vue3:重构Pinia的store,使用组合式写法实现

    2024-04-06 02:04:05       40 阅读
  6. 给web开发零基础小白的简明入门教程

    2024-04-06 02:04:05       41 阅读
  7. leetcode575-Distribute Candies

    2024-04-06 02:04:05       33 阅读
  8. 关于地球内部猜想,火山和地震成因“之一”

    2024-04-06 02:04:05       42 阅读
  9. 关于根据url下载文件之空格符报错

    2024-04-06 02:04:05       34 阅读
  10. Digi XBee RF 模块型号说明

    2024-04-06 02:04:05       37 阅读
  11. 【必看】Midjourney订阅前必看的十件事

    2024-04-06 02:04:05       41 阅读