Vit*_*y A 1 grand-central-dispatch ios swift dispatch-queue
通过使用以下代码,我期望每次调用 func 时,执行之间的最短时间为 3-4 秒。
但是:当我writeData()连续调用4 次时,我看到异步块在不等待前一次调用完成的情况下执行。
func writeData(){
DispatchQueue(label: "be.io").asyncAfter(deadline: .now() + 1) {
print("START :\(Int64((Date().timeIntervalSince1970 * 1000.0).rounded()))")
Thread.sleep(forTimeInterval: 3)
}
}
...
writeData()
writeData()
writeData()
writeData()
Run Code Online (Sandbox Code Playgroud)
预期的输出应该是这样的:
START :1611250630000
START :1611250634000
START :1611250638000
START :1611250642000
Run Code Online (Sandbox Code Playgroud)
但在执行时,我得到了所有 4 个调用相同的时间戳(大约 1 毫秒的差异)。
START :1611250630000
START :1611250630000
START :1611250630000
START :1611250630000
Run Code Online (Sandbox Code Playgroud)
我在做什么错?
PS我毫不拖延地尝试了异步,没有运气。
DispatchQueue(label: "be.io") 每次调用时都会创建一个新实例
为了达到你的预期,让它成为一个实例变量
let mySerialQueue = DispatchQueue(label: "be.io")
Run Code Online (Sandbox Code Playgroud)