swift 线程安全访问数组的开始。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了swift 线程安全访问数组的开始。相关的知识,希望对你有一定的参考价值。
struct SafeArray<Element> {
private let multiReaderQueue: DispatchQueue
private var array = [Element]()
init() {
multiReaderQueue = DispatchQueue(label: "safeArray.internal", attributes: .concurrent)
}
var count: Int { return read { self.array.count } }
var last: Element? { return read { self.array.last } }
mutating func append(_ element: Element) {
write { self.array.append(element) }
}
private func read<T>(execute block: () -> T) -> T {
return multiReaderQueue.sync(execute: block)
}
private func write<T>(execute block: () -> T) -> T {
return multiReaderQueue.sync(flags: .barrier, execute: block)
}
}
以上是关于swift 线程安全访问数组的开始。的主要内容,如果未能解决你的问题,请参考以下文章
Swift COW 线程安全
Swift - 分派到主队列是不是足以使 var 线程安全?
swift实现线程安全的栈和队列
将 Swift 调用同步到基于 C 的线程不安全库
java中的线程安全随机访问循环数组?
如何提供对大型数组元素的线程安全访问