pdf文档 THE NETWORKINGTS FROM SCRATCH: IO Objects

900.82 KB 35 页 0 评论
语言 格式 评分
英语
.pdf
3
摘要
文档主要介绍了C++ Networking TS中I/O对象的概念和实现细节,包括异步操作、完成处理程序的存储、Service对象的作用以及ExecutionContext的生命周期管理。I/O对象提供了对底层异步功能的处理,并解决了所有权循环的问题。文档还讨论了如何通过Service对象管理完成处理程序,以避免潜在的循环引用,并确保异步操作的正确组合和执行。
AI总结
以下是对文档内容的中文总结,重点突出核心观点和关键信息,逻辑连贯且简洁明了: --- ### 文档总结:《THE NETWORKINGTS FROM SCRATCH: IO Objects》 #### 1. **Networking TS 简介** - **目标与背景**: - Networking TS 的目标是 C++23(P0592)。 - 当前使用了独立的 Asio(1.18.0)来准备内容,并结合 P0443 友好的扩展。 - **关键点**: - 异步操作必须确保 Networking TS 的保证。 - Completion handlers 必须存储在服务中以避免所有权循环。 - 需要跟踪未完成的工作以确保 ExecutionContext 在完成时仍可用。 #### 2. **I/O Objects** - **定义与作用**: - I/O Objects 提供了对底层异步功能的句柄,符合 Networking TS 框架。 - **实例**: - `std::net::ip::tcp::socket` - `std::net::steady_timer` - **可能扩展**: - 基于 EFVI 的多播套接字。 - 数据库访问层。 - 打印机应用。 - **潜在问题**: - I/O 对象可能拥有待处理异步操作,导致类型擦除或所有权循环。 #### 3. **Completion Handler 存储与服务** - **Completion Handler 存储选项**: - 待处理操作可能拥有目标(如 std::function)。 - I/O 对象可能包含待处理操作的容器。 - 类型擦除可能导致目标类型不确定,存在潜在的所有权循环。 - **解决方案**: - 使用服务对象(Service)存储 Completion handlers,打破潜在的所有权循环。 - 服务对象由 ExecutionContext 拥有,当 ExecutionContext 生命周期结束时,所有服务和 Completion handlers 会被销毁。 #### 4. **异步操作的组合与保证** - 异步操作的组合需要确保其保证被遵守。 - 组成的异步操作的保证依赖于每个操作的保证被传递遵守。 --- ### 核心观点 本文档围绕 Networking TS 的 I/O Objects 和异步操作的管理展开,重点讨论了如何避免所有权循环、存储 Completion handlers 以及异步操作的组成与保证。通过服务对象的引入,解决了潜在的生命周期管理问题,为 Networking TS 的使用提供了重要的指导。
P1
P2
P3
P4
P5
P6
P7
P8
P9
P10
P11
P12
下载文档到本地,方便使用
- 可预览页数已用完,剩余 23 页请下载阅读 -
文档评分
请文明评论,理性发言.