SuperAPI AI 工具集

axiom-synchronization

编程与开发

查看项目

更新于 10-16 06:46

技能介绍

用途:当 actor 过慢或过重时,为性能关键代码提供线程安全的同步原语,属于底层并发工具。

主要能力:Mutex(iOS 18+/Swift 6,import Synchronization),泛型保护值、Sendable、仅闭包访问,支持 withLock 与 withLockIfAvailable 非阻塞尝试;OSAllocatedUnfairLock(iOS 16+,import os),堆分配、地址稳定、非递归、Sendable,提供闭包式 withLock 与 lock/unlock 传统方式;Atomic 类型(iOS 18+),支持 wrappingAdd 与 compareExchange 等操作。

选择依据:微秒级操作、保护单一属性、跨模块共享用 Mutex;复杂异步流程或需要挂起点用 Actor;高频计数器用 Atomic;iOS 18 以下回退到 OSAllocatedUnfairLock。

用法:资料给出五种模式,包括线程安全计数器、Sendable 包装、actor 内用 Mutex 做快速非隔离读取、Atomic 无锁计数器以及 iOS 16 回退。命令与代码保持原样,如 import Synchronization、let mutex = Mutex<Int>(0)、mutex.withLock { $0 += 1 }。

限制与风险:不得跨 await 持锁,否则有死锁风险;信号量与读写锁会阻塞协作线程池,应改用 async continuation;不要直接使用 os_unfair_lock(内存可能移动,属未定义行为),改用 OSAllocatedUnfairLock;OSAllocatedUnfairLock 非递归,重复加锁会死锁;不要混用 lock/unlock 与 withLock。内存顺序方面,计数器默认 .relaxed,读改写用 .acquiringAndReleasing。

适用场景:性能敏感的同步访问、跨模块共享状态、无锁计数等;需要挂起或跨 await 协调时应使用 actor。资料未提供版本外的平台差异、性能数据或官方文档链接之外的细节。