Build Codecov Platforms Swift 6.0

简介

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
}

Gist

一个更简单、单文件的版本,兼容 macOS 13 / iOS 16,可以在 这个 gist 中找到。

鸣谢

swift-mutex 主要由 Simon Whitty 完成。

(贡献者完整列表)