【发布时间】:2020-10-20 23:02:47
【问题描述】:
我正在尝试使用资源包装器进行线程安全访问。在我的实现中,awaitedValue 字段通过串行队列执行资源的同步read。出于某种原因,每当我尝试读取此属性时,我的应用程序都会因错误而崩溃,这对于同步代码来说没有意义。
class ThreadsafeResource<T> {
private let accessorsQueue: DispatchQueue
private var resource: T
//MARK: Initializers
init(_ resource: T) {
self.resource = resource
self.accessorsQueue = DispatchQueue(label: "X")
}
//MARK: Synchronous access
var awaitedValue: T {
accessorsQueue.sync(flags: .inheritQoS) { // Point where my app crashes.
self.resource
}
}
}
我尝试从main 和global(.utility) 队列中读取它——结果相同。对资源的异步调用工作正常。
【问题讨论】:
标签: ios swift grand-central-dispatch synchronous dispatch-queue