et-async - ET Async 入口
何时使用
- 新增、修改或 review
async/await/ETTask/ETTask<T> - 判断某段逻辑是否应该异步化,或是否应该改回同步
- 处理
await后Entity访问、EntityRef<T>、HandlerRun异步安全 - 设计并发等待、
ETTask.WaitAll(...)、ETCancellationToken、NewContext(...)
不要加载
- 代码完全同步,且不涉及异步边界、安全或取消控制
- 只是编译、导出、跑测试、操作 Unity / Excel
默认动作
- 先判断是否真的需要异步,并明确谁在等待返回值。
- 只有 RPC、IO、定时器、协程锁、跨 Fiber 结果或其它真实异步资源,才保留
async/ETTask。 - 调用方不依赖返回值时,优先改成同步方法、普通消息、
Send或独立协程。 - 只要存在
await后继续访问 Entity 的路径,就在await前创建EntityRef<T>,并在await后重新获取。 - 函数参数可以传 Entity;字段、属性、集合中保存
EntityRef<T>,不要长期持有 Entity。 - 在消费结果的协程里直接
await;不要设计“返回一个ETTask句柄,后面再 await”的桥接层。 NewContext(...)只承担独立协程与取消边界;需要携带实体时使用EntityRef<T>。
快速分流
EntityRef正误示例、并发等待、取消控制:补读references/et-async-rules.md- Handler
Run、组件契约、包结构:叠加et-code - 测试里的异步等待:叠加
et-test-write
输出要求
- 说明异步是否必要,以及谁在等待结果
- 说明
await后实体访问是否通过EntityRef<T>保护 - 说明并发组织方式是否避免延后消费
ETTask - 说明
ETCancellationToken/NewContext(...)是否只承担取消与协程边界职责