使用 DispatchQueue.main.sync 时应用程序崩溃
Application is crashing while using DispatchQueue.main.sync
我正在用 Grand Central Dispatch 做实验,遇到同步任务崩溃。
func viewDidLoad() {
super.viewDidLoad()
self.testHello()
print("Task2")
}
func testHello() {
DispatchQueue.main.sync {
print("Task1")
}
}
执行上述给定函数后,我面临崩溃。
如能解释上述崩溃,将不胜感激。
来自 DispatchQueue.sync 文档:
...this function does not return until the block has finished. Calling this function and targeting the current queue results in deadlock.
您已经在主队列中,并且强制代码在主队列上同步执行。您在主队列中的事实意味着现在无法在队列上执行其他代码,但是,sync
等待该代码执行,因此您使队列和整个应用程序陷入死锁。
我正在用 Grand Central Dispatch 做实验,遇到同步任务崩溃。
func viewDidLoad() {
super.viewDidLoad()
self.testHello()
print("Task2")
}
func testHello() {
DispatchQueue.main.sync {
print("Task1")
}
}
执行上述给定函数后,我面临崩溃。
如能解释上述崩溃,将不胜感激。
来自 DispatchQueue.sync 文档:
...this function does not return until the block has finished. Calling this function and targeting the current queue results in deadlock.
您已经在主队列中,并且强制代码在主队列上同步执行。您在主队列中的事实意味着现在无法在队列上执行其他代码,但是,sync
等待该代码执行,因此您使队列和整个应用程序陷入死锁。