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()
        }
    }
}