1 swift 单例
final class SingleTon: NSObject {
static let shared = SingleTon()
private override init() {}
}
*final 单例类终止继承
- 初始化方法私有,避免外部对象通过init方法创建单例实例
2 信号量DispatchSemaphore
let semaphoreSignal = DispatchSemaphore.init(value: 1)
for i in 0..< 5 {
DispatchQueue.global().async {
semaphoreSignal.wait()
print(Thread.current)
print(i)
semaphoreSignal.signal()
}
}
初始值如果是50回怎么样? 顺序会乱
- DispatchSemaphore(value: 2)初始化信号量为2,用来控制并发线程的数量,相当于`Operation`中的`maxConcurrentOperationCount
- semaphore.wait()信号量 -1
- semaphore.signal()信号量为+1