当前位置: 首页 > news >正文

37、Windows 异步 I/O、完成端口与对象安全

Windows 异步 I/O、完成端口与对象安全

1. 异步 I/O 方法概述

Windows 提供了三种执行异步 I/O 的方法,下面为你详细介绍:
| 方法 | 特点 |
| — | — |
| 线程 | 最通用且简单的技术。每个线程负责一个或多个顺序的、阻塞的 I/O 操作序列,且每个线程应有自己的文件或管道句柄。 |
| 重叠 I/O | 允许单个线程对单个文件句柄执行异步操作,但每个操作必须有一个事件句柄,而不是线程和文件句柄对。需要专门等待每个 I/O 操作完成,然后执行任何所需的清理或排序操作。 |
| 扩展 I/O | 自动调用完成代码,不需要额外的事件。 |

重叠 I/O 的一个不可或缺的优势是能够创建 I/O 完成端口,这一点在后续会有程序示例说明。单个服务器线程可以为多个客户端服务,这在有数千个客户端的情况下非常重要,因为内存可能不足以支持同等数量的服务器线程。

2. 使用 I/O 完成端口的服务器示例

2.1 服务器设计

示例中的服务器(Program 14 - 4)对之前的程序进行了修改,以使用 I/O 完成端口。该服务器创建了一个小的服务器线程池和一个较大的重叠管道句柄池,并为每个句柄设置了完成键。重叠句柄被添加到完成端口,并发出相应调用。服务器线程等待与客户端连接和读取操作相关的完成事件。

2.2 客户端管道状态

每个客户端管道会经历一系列状态,这些状态存储在每个管道的特定结构中,具体如下:
1.连接状态:管道与服务器线程建立连接。
2.

http://www.jsqmd.com/news/121010/

相关文章:

  • C++STL: vector 简单使用,讲解
  • Excalidraw镜像提供专属技术支持通道,响应迅速
  • C++string类常用的库函数和全局函数2——补充
  • 38、Windows 对象安全:UNIX 风格权限及相关操作详解
  • Excalidraw与ClickUp集成,任务管理可视化升级
  • Excalidraw支持导出为Latex格式,学术写作福音
  • Excalidraw支持全局缩放,宏观微观自由切换
  • 39、深入探索Windows对象安全与代码可移植性
  • 40、代码可移植性与性能测试分析
  • C++string: SBO 和 引用记数的写时拷贝
  • Excalidraw实战:绘制AI模型训练流水线架构图
  • Excalidraw支持外部数据源接入,打造动态仪表盘
  • 手搓简单 string 库:了解C++ 字符串底层
  • Excalidraw支持RTL语言布局,拓展中东市场
  • Excalidraw与Asana集成,项目进度可视化再升级
  • Excalidraw实战:绘制电商平台订单状态机图
  • Excalidraw镜像具备灾备恢复能力,业务连续性保障
  • Excalidraw与Zoom会议结合使用,远程协作新范式
  • Excalidraw支持自定义字体,展现个性化风格
  • Excalidraw镜像支持一键扩容,应对流量高峰
  • Excalidraw绘图协作权限细分到字段级别
  • Excalidraw镜像提供用量统计报表,便于成本控制
  • EMC整改流程框图,RE超标整改流程
  • DDR的T型和fIy-by拓扑,DDR的Training介绍
  • Excalidraw绘图模板商城上线,优质内容付费获取
  • Excalidraw支持导出带注释的PDF文档,汇报利器
  • Excalidraw在政府信息化项目中的合规性评估
  • Excalidraw绘图元素支持自定义行为脚本扩展
  • Excalidraw如何处理大规模并发连接?后端架构剖析
  • GitHub 上星星数量前 10 的 AI CRM 开源项目