gpt4 book ai didi

ios - Swift 异步打印顺序?

转载 作者:IT王子 更新时间:2023-10-29 05:18:53 24 4
gpt4 key购买 nike

这是否总是按 1 5 2 4 3 的顺序打印?

print("1")
DispatchQueue.main.async {
print("2")
DispatchQueue.main.async {
print(3)
}
print("4")
}
print("5")

我觉得答案是否定的,但我无法解释,希望有人能澄清我的理解。谢谢!

最佳答案

这取决于你从哪个线程开始操作。

如果你从 main 开始,那么你会得到 1, 5, 2, 4, 3

如果你从后台线程开始,那么大多数时候你会得到相同的结果(1, 5, 2, 4, 3),但是这不能保证作为后台操作系统可以随时让线程进入休眠状态,如果这恰好发生在 print(5) 调用之前,那么 5 将是最后打印的。

请注意,如果问题中的代码是您的应用程序/ Playground 中唯一的代码,那么您可能会对遇到部分打印感到惊讶,因为应用程序/ Playground 一遇到 print 就会退出(5) 行,在有机会执行异步调度之前。为避免这种情况,您可以确保 RunLoop.current.run() 作为代码的最后一部分在主线程上执行。

下面是一些图表,试图说明在仅主线程场景中发生的情况,以及涉及后台线程的场景:

enter image description here enter image description here

关于ios - Swift 异步打印顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52733121/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com