先预测任务会怎样,
再看它真正怎样结束。
一台面向 UIKit 学习者的并发显微镜:在虚构消息收件箱中并列观察 GCD、OperationQueue 与 Swift Concurrency,追踪 owner、取消、隔离、乱序完成与 UI 回写。
A public UIKit learning lab for observing task ownership, cancellation, isolation, stale results, bounded concurrency, and UI commits.
- Guided labs9个并发实验source count
- Strategies3GCD / Operation / Swiftsource map
- Core tests6确定性场景swift test
- UI flows2Inbox / LearnXCUITest
System
同一收件箱,对照三种并发组织方式。
App 只负责可见操作与 `@MainActor` 状态;纯 Swift Core 提供可控延迟、事件记录器与三套 runner,让测试和观察面对同一份场景。
GCD 与 Operation 仍是必要语言
用 queue、group、barrier、work item、依赖图和最大并发数维护旧系统,并明确 cancel 是协作请求而非强杀。
把生命周期、隔离和结果写进结构
用 async let、TaskGroup、actor、MainActor 和 checked continuation 表达任务树、共享状态与旧 API 边界。
9 experiments
从 UI 卡顿到旧回包覆盖。
每个实验在 Learn 中先给预测题,再将真实运行时序写入 Logs;学习进度不能由点击自动冒充掌握。
- 响应性
- 并行加载
- 协作取消
- 状态隔离
- Reentrancy
- Latest-wins
- Cell 复用
- 受限预加载
- Callback bridge
收件箱中的头像 cell 持有当前模型对应的 Task,在复用时取消,并在提交前比对 represented ID。
Evidence, not claims
并发正确性不能只靠一次运行。
默认门禁验证输出、取消、并发上限与身份;高风险路径再用 Xcode 诊断工具取得独立证据。
- Compilerbuild
Swift 6 严格并发检查让隔离与 Sendable 合同尽早暴露。
- Coreswift test
受限 TaskGroup、actor 计数、reservation、latest-wins 与 continuation 有确定性测试。
- UIXCUITest
Inbox、Learn、运行实验与 Logs 都在 Simulator UI 流程中验证。
- Diagnosticsmanual trace
Main Thread Checker、TSan 与 Instruments 的操作记录见 evidence playbook;不把无报告误解成绝对安全。
Run locally
5 分钟开始第一次预测。
需要 macOS、Xcode 26.2 和 iOS 17+ Simulator。所有消息、头像、延迟与错误回包都由本地模拟服务生成。
git clone https://github.com/estelledc/SwiftConcurrencyLab.git
cd SwiftConcurrencyLab
make check
make run
# 验证真实交互流程
make test-uiPublic boundary
刻意不做什么。
不接入真实聊天服务,不包含内部资料、凭证或本机路径;不把故意的 data race 放进默认 App 或 CI;不因读过课程、跑过一次 Demo 就声称已经掌握并发。