Coroutines and Structured Concurrency in Practice
                
  
              1.98 MB
             
              103 页
               
              0 评论
              
| 语言 | 格式 | 评分 | 
|---|---|---|
英语  | .pdf  | 3  | 
| 摘要 | ||
文档讨论了’structured concurrency’(结构化并发)的概念及其在实际中的应用。结构化并发通过任务树的形式组织协程、叶等待对象(如睡眠、I/O等)和组合器(如allOf()、anyOf()),使得异常和取消操作能够沿着任务树传播。文档还介绍了’nursery’(苗圃)概念,作为结构化并发的基础原语,类似于Python Trio中的’nursery’、Rust中的’task scope’等。通过示例代码,文档展示了如何使用协程简化异步编程,包括任务生命周期管理、错误传播以及资源管理等方面。  | ||
| AI总结 | ||
《Coroutines and Structured Concurrency in Practice》这一文档主要探讨了协程(coroutines)和结构化并发(structured concurrency)在实践中的应用,重点介绍了其核心概念、优势以及如何构建相关API。以下是文档的简要总结:
---
### 1. **结构化并发的核心概念**
- **任务树**:任务自然形成一棵“调用树”,其中包括:
  - 协程(coroutines)
  - 叶等待器(leaf awaitables,如睡眠、I/O等)
  - 组合器(combiners,如`allOf()`和`anyOf()`)
- **异常和取消的传播**:
  - 异常从子任务向上层传播。
  - 取消信号从父任务向下层传播。
  - 每个任务完成后,不会有任务被遗漏。
---
### 2. **结构化并发的优势**
- **更易于推理**:通过任务树的结构化方式,代码逻辑更加清晰。
- **更易于对象生命周期管理**:任务树的结构使得资源的创建和销毁更加明确。
- **更易于错误处理**:错误和异常可以通过任务树自动向上层传播。
---
### 3. **核心组件:`nursery`**
- `nursery`(“苗圃”)是结构化并发的核心 primitive,类似于:
  - Python Trio 的 `nursery`
  - Python Asyncio 的 `task group`
  - Rust 的 `task scope`
  - Kotlin 的 `coroutine scope`
  - NVIDIA_stdexec 的 `async_scope`
- `nursery` 的功能包括:
  - 管理子任务的完成。
  - 处理早取消(early cancellation)。
  - 保证结构化并发的不变性(invariants),确保资源管理和异常传递的正确性。
---
### 4. **API 设计与示例**
- 示例代码展示了如何构建一个`greetTwice`任务,通过`nursery`管理多个子任务:
  ```cpp
  Task  | ||
 P1 
 P2 
 P3 
 P4 
 P5 
 P6 
 P7 
 P8 
 P9 
 P10 
 P11 
 P12 
下载文档到本地,方便使用
    
                - 可预览页数已用完,剩余
                91 页请下载阅读 -
              
文档评分 
  












