By using following code, I am expecting that every time the func is caled, minimum time between executions will be 3-4 seconds.
But: when I call the writeData()
4 times in row, I see that async block executed without waiting for previous call finished.
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()
Expected output should be something like:
START :1611250630000
START :1611250634000
START :1611250638000
START :1611250642000
but on execution i get same timestamp (~1 millisecond difference) for all 4 calls.
START :1611250630000
START :1611250630000
START :1611250630000
START :1611250630000
What i am doing wrong?
P.S I tried async without delay, no luck.
question from:
https://stackoverflow.com/questions/65832975/dispatchqueue-doesnt-behave-like-serial-queue 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…