Wait 操作可以通过 @autoclosure 来简化语法
import Foundation
let condition = NSCondition()
var done = false
DispatchQueue.main.async {
(0...100000000).forEach { print($0) }
condition.lock()
done = true
condition.unlock()
}
condition.lock
condition.wait(until: done)
condition.unlock
print("Done")
import Foundation
extension NSCondition {
func wait(until condition: @autoclosure () -> Bool) {
while !condition() {
wait()
}
}
}