跳到主要内容
SwiftConcurrencyLabObservable iOS concurrency learning lab
Building · v0.1.0Public UIKit learning system

先预测任务会怎样,
再看它真正怎样结束。

一台面向 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,让测试和观察面对同一份场景。

01 / Legacy and queue model

GCD 与 Operation 仍是必要语言

用 queue、group、barrier、work item、依赖图和最大并发数维护旧系统,并明确 cancel 是协作请求而非强杀。

02 / Modern structured model

把生命周期、隔离和结果写进结构

用 async let、TaskGroup、actor、MainActor 和 checked continuation 表达任务树、共享状态与旧 API 边界。

9 experiments

从 UI 卡顿到旧回包覆盖。

每个实验在 Learn 中先给预测题,再将真实运行时序写入 Logs;学习进度不能由点击自动冒充掌握。

  1. 响应性
  2. 并行加载
  3. 协作取消
  4. 状态隔离
  5. Reentrancy
  6. Latest-wins
  7. Cell 复用
  8. 受限预加载
  9. Callback bridge

收件箱中的头像 cell 持有当前模型对应的 Task,在复用时取消,并在提交前比对 represented ID。

Evidence, not claims

并发正确性不能只靠一次运行。

默认门禁验证输出、取消、并发上限与身份;高风险路径再用 Xcode 诊断工具取得独立证据。

  • Compiler

    Swift 6 严格并发检查让隔离与 Sendable 合同尽早暴露。

    build
  • Core

    受限 TaskGroup、actor 计数、reservation、latest-wins 与 continuation 有确定性测试。

    swift test
  • UI

    Inbox、Learn、运行实验与 Logs 都在 Simulator UI 流程中验证。

    XCUITest
  • Diagnostics

    Main Thread Checker、TSan 与 Instruments 的操作记录见 evidence playbook;不把无报告误解成绝对安全。

    manual trace

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-ui

Public boundary

刻意不做什么。

不接入真实聊天服务,不包含内部资料、凭证或本机路径;不把故意的 data race 放进默认 App 或 CI;不因读过课程、跑过一次 Demo 就声称已经掌握并发。