我在Swift 3中创建了一个简单的单例:
class MySingleton {
private var myName: String
private init() {}
static let shared = MySingleton()
func setName(_ name: String) {
myName = name
}
func getName() -> String {
return myName
}
}
Run Code Online (Sandbox Code Playgroud)
由于我创建了init()私有的,也声明了shared实例static let,我认为初始化程序是线程安全的.但是getter和setter函数myName呢,它们是否安全?
我们什么时候应该使用信号量 vs 调度组 vs 操作队列?
我的理解是:
使用信号量:当多个线程想要访问共享资源时。
Use Dispatch Group:当你想要的时候,你应该在所有线程(被添加到调度组)完成它们的执行后得到通知。
使用操作队列:当您希望操作 C 应在 A 和 B 完成执行后开始时。所以 A 和 B 依赖于 C。
我的理解是否正确?