swift-mutex 是一个跨平台锁,将 Swift 6 的 Mutex
API 向后移植到 Swift 5.9 和所有 Darwin 平台。
Mutex 构建于 AllocatedLock
之上,AllocatedLock
是一个 API 与 OSAllocatedUnfairLock
兼容的跨平台锁。此锁在 Darwin 平台上封装了 os_unfair_lock_t
,在 Linux 上封装了 pthread_mutex_t
,在 Windows 上封装了 SRWLOCK
。
可以使用 Swift Package Manager 安装此软件包。
注意: Mutex 需要 Xcode 15+ 上的 Swift 5.9。它运行在 iOS 13+、tvOS 13+、macOS 10.15+、Linux 和 Windows 上。要使用 Swift Package Manager 安装,请将此添加到您的 Package.swift 文件中的 dependencies:
部分
.package(url: "https://github.com/swhitty/swift-mutex.git", .upToNextMajor(from: "0.0.5"))
用法类似于 Swift 6 的 Mutex
let state = Mutex<Int>(0)
使用 .withLock
获取锁以读取状态
let val = state.withLock { $0 }
或修改状态
let val = state.withLock {
$0 += 1
return $0
}
一个更简单、单文件的版本,兼容 macOS 13 / iOS 16,可以在 这个 gist 中找到。
swift-mutex 主要由 Simon Whitty 完成。
(贡献者完整列表)