状态路径
text
NEW → prepare → READY → start → RUNNING
│ │
│ pause
│ ▼
└─────── PAUSED
│
single_step / resume
READY / RUNNING / PAUSED → reset
READY / RUNNING / PAUSED → stop → STOPPED
任意未关闭状态 → close → CLOSED
prepare 创建并检查运行依赖,start 开始推进世界,pause 在完整边界暂停,single_step 只推进一个允许的步,stop 结束活动运行,close 释放全部资源。
Generation
Reset 会创建新的 generation 并把 tick 重新置零。旧 generation 中排队的写操作、控制会话或订阅不能泄漏到新世界;读取结果也携带 generation,便于调用者识别过期数据。
同步与异步门面
FastSimApplication 是推荐的异步门面,适合嵌入 asyncio 应用、Server 和插件。FastSimRun 提供同步上下文与阻塞式生命周期操作,适合脚本和简单 CLI 集成。二者不构成两套 Runtime。
终结顺序
Stop 与 close 不只是关闭后端。控制源需要停止提交,未完成 Operation 需要得到终态,数据插件需要 flush,输出需要验证后原子发布,订阅与服务必须撤销。只有完成这些步骤,Run 才能被报告为完整结束。
生命周期不变量
- 物理世界只有一个权威所有者。
- Pause 不把世界停在半个控制/物理 tick 中间。
- Close 幂等且最终释放后台任务。
- 失败与取消必须保留结构化结果,不能伪装成成功停止。
公共方法见Application API 指南与Python SDK。