我有一个名为MyClass的班级. 我想要做的是确保每次调用它的一个方法时,该方法总是在同一队列上被调用.
我正在努力确保我在MyClass中调用的每个方法都在同一队列中被调用.这是因为MyClass充当驱动我的应用程序的数据的访问点.任何时候,应用程序的任何部分需要获取或设置唯一的真理来源,它都会通过这个类.我想安全地防止任何访问或修改真相来源的并发问题.
我可以通过将每个调用包装在异步块中来做到这一点. 我正在寻找一种更优雅、更"笨重"的方式来实现这一点.
我的问题是,我如何才能在不必将每个方法调用包装在块中的情况下实现这一点?
class MyClass {
static let queue = DispatchQueue(label: "myqueue",
attributes: .concurrent)
func functionSet1(value: String) {
}
func functionGet1() -> Bool {
return true
}
func functionSet2(value: String) {
}
func functionGet2() -> Bool {
return true
}
}
class Invoker {
let invokee: MyClass = MyClass()
func call1() {
MyClass.queue.sync {
invokee.functionGet1()
}
}
func call2() {
MyClass.queue.sync {
invokee.functionGet2()
}
}
func call3() {
MyClass.queue.sync {
invokee.functionSet1(value: "value")
}
}
func call1() {
MyClass.queue.sync {
invokee.functionSet1(value: "value")
}
}
}