用途
axiom-ios-concurrency 是一个 iOS 并发路由技能。当你在编写任何涉及 async、actors、线程的代码,或遇到任何并发错误时,应使用该技能。它本身不直接给出全部实现细节,而是根据问题类型把任务路由到 axiom 集合中对应的专项技能。
何时使用
- 编写 async/await 代码
- 遇到并发错误(数据竞争、actor 隔离)
- 使用 @MainActor
- 处理 Sendable 一致性
- 优化 Swift 性能
- 迁移到 Swift 6 并发
- 应用在加载时卡死(很可能是主线程阻塞)
冲突解决规则
- ios-concurrency 与 ios-performance:应用卡死或变慢时,先尝试 ios-concurrency,因为主线程阻塞是 UI 卡死的首要原因,应先检查 @MainActor 上的同步工作,再考虑性能剖析。只有在并发修复无效时才使用 ios-performance。
- ios-concurrency 与 ios-build:遇到 Swift 6 并发错误时使用 ios-concurrency,而不是 ios-build,因为并发错误是代码问题而非环境问题。ios-build 用于“No such module”、模拟器问题等与 Swift 语言错误无关的构建失败。
- ios-concurrency 与 ios-data:当并发错误涉及 Core Data 或 SwiftData 时,Core Data 线程(NSManagedObjectContext 线程约束、performBackgroundTask)应先用 ios-data,因为 Core Data 有自己的线程模型;SwiftData + @MainActor ModelContext 则用 ios-concurrency;一般性的“后台保存丢数据”先用 ios-data。
路由逻辑
- Swift 6 并发模式、async/await 模式、@MainActor 用法、Actor 隔离、Sendable 一致性、数据竞争预防、Swift 6 迁移 → /skill axiom-swift-concurrency
- Swift 并发 API 参考(Actor 定义、重入、全局 actor、Sendable 模式、@unchecked Sendable、Task/TaskGroup/取消 API、AsyncStream、continuation、DispatchQueue 迁移到 actor)→ /skill axiom-swift-concurrency-ref
- Swift 性能(值类型与引用类型、写时复制优化、ARC 开销、泛型特化、集合性能)→ /skill axiom-swift-performance
- 同步访问 actor(MainActor.assumeIsolated、@preconcurrency 协议一致性、旧式委托回调、同步测试 MainActor 代码)→ /skill axiom-assume-isolated
- 线程安全原语(Mutex(iOS 18+)、OSAllocatedUnfairLock(iOS 16+)、原子类型、锁与 actor 的取舍)→ /skill axiom-synchronization
- 参数所有权(borrowing/consuming 修饰符、不可复制类型 ~Copyable、减少 ARC 流量、consume 操作符)→ /skill axiom-ownership-conventions
- 并发剖析(Swift Concurrency Instruments 模板、actor 争用诊断、线程池耗尽、任务可视化)→ /skill axiom-concurrency-profiling
- Combine 响应式模式(Publisher/Subscriber 生命周期、AnyCancellable、Combine 与 async/await 取舍、@Published + ObservableObject、操作符模式、桥接)→ /skill axiom-combine-patterns
自动化扫描
并发审计:启动 concurrency-auditor 代理或 /axiom:audit concurrency(五阶段语义审计:映射隔离架构、检测 8 种反模式、推理缺失的并发模式、关联复合风险、评估 Swift 6.3 就绪度)。
决策树
- 数据竞争 / actor 隔离 / @MainActor / Sendable?→ swift-concurrency
- 需要具体 API 语法(actor 定义、TaskGroup、AsyncStream、continuation)?→ swift-concurrency-ref
- 编写 async/await 代码?→ swift-concurrency
- Swift 6 迁移?→ swift-concurrency
- assumeIsolated / @preconcurrency?→ assume-isolated
- Mutex / 锁 / 同步?→ synchronization
- borrowing / consuming / ~Copyable?→ ownership-conventions
- 剖析异步性能 / actor 争用?→ concurrency-profiling
- 值类型 / ARC / 泛型优化?→ swift-performance
- 想要自动化并发扫描?→ concurrency-auditor(Agent)
- Combine / @Published / AnyCancellable / 响应式流?→ combine-patterns
反合理化说明
- “只要加 @MainActor 就能工作”:@MainActor 有隔离继承规则,swift-concurrency 覆盖所有模式。
- “我用 nonisolated(unsafe) 消除警告”:消除警告会隐藏数据竞争,swift-concurrency 展示安全模式。
- “只是一个 async 调用”:即使单个 async 调用也有取消和隔离影响,swift-concurrency 会覆盖。
- “我懂 actor 怎么工作”:actor 重入和隔离规则在 Swift 6.2 有变化,swift-concurrency 是最新的。
- “我稍后修复 Sendable 警告”:Sendable 违规会导致运行时崩溃,swift-concurrency 现在就能正确修复。
- “Combine 已死,直接用 async/await”:Combine 没有弃用通知,重写可用的管道浪费时间并引入 bug,combine-patterns 覆盖增量迁移。
关键模式
- Swift 6 并发(swift-concurrency):渐进式路径(单线程 → async → 并发 → actors)、@concurrent 属性强制后台执行、隔离一致性、主 actor 模式、11 个可复制粘贴模式。
- Swift 性能(swift-performance):~Copyable 不可复制类型、写时复制(COW)模式、值类型与引用类型决策、减少 ARC 开销、泛型特化。
示例调用
- “我在 Swift 6 中遇到‘data race’错误” → /skill axiom-swift-concurrency
- “如何正确使用 @MainActor?” → /skill axiom-swift-concurrency
- “我的应用因不必要的复制而变慢” → /skill axiom-swift-performance
- “这个网络调用该用 async/await 吗?” → /skill axiom-swift-concurrency
- “如何使用 assumeIsolated?” → /skill axiom-assume-isolated
- “我的委托回调在主线程运行,如何访问 MainActor 状态?” → /skill axiom-assume-isolated
- “该用 Mutex 还是 actor?” → /skill axiom-synchronization
- “os_unfair_lock 和 OSAllocatedUnfairLock 有什么区别?” → /skill axiom-synchronization
- “borrowing 在 Swift 中做什么?” → /skill axiom-ownership-conventions
- “如何使用 ~Copyable 类型?” → /skill axiom-ownership-conventions
- “我的异步代码很慢,如何剖析?” → /skill axiom-concurrency-profiling
- “我怀疑有 actor 争用,如何诊断?” → /skill axiom-concurrency-profiling
- “我的 Core Data 保存丢失后台任务数据” → 路由到 ios-data 路由(Core Data 线程是框架特定的)
- “如何创建 TaskGroup?” → /skill axiom-swift-concurrency-ref
- “AsyncStream API 是什么?” → /skill axiom-swift-concurrency-ref
- “如何创建自定义全局 actor?” → /skill axiom-swift-concurrency-ref
- “如何把完成处理器转换为 async?” → /skill axiom-swift-concurrency-ref
- “actor 重入规则是什么?” → /skill axiom-swift-concurrency-ref
- “我的 Combine 管道静默停止产生值” → /skill axiom-combine-patterns
- “这个数据流该用 Combine 还是 async/await?” → /skill axiom-combine-patterns
- “如何把 Combine publisher 桥接到 async/await 代码?” → /skill axiom-combine-patterns
- “AnyCancellable 内存泄漏” → /skill axiom-combine-patterns
- “检查我的代码是否有 Swift 6 并发问题” → concurrency-auditor 代理
限制
该技能是路由入口,具体实现细节由各专项子技能提供。资料未提供安装命令、收费或价格信息。