为什么线程上的同步调用有益?

时间:2014-12-13 21:31:30

标签: ios objective-c xcode multithreading swift

我已经阅读了关于Grand Central Dispatch的几个教程,但我不明白一件事:

为什么dispatch_sync比不使用线程更快?如果我有线程1等待线程2完成,那么即使使用第二个线程也是如此?

1 个答案:

答案 0 :(得分:3)

让我们说你是在后台线程。并且让我们说你需要在主线程上做一些事情来与界面交谈,但你不能允许后台线程完成,因为主线程需要来自后台线程的一些资源,比如文件。然后使用sync实际上很好。当你进入主线程时它会阻塞后台线程,而你实际上想要来做这件事。

这是我书中的一个例子:

https://github.com/mattneub/Programming-iOS-Book-Examples/blob/master/bk2ch24p842downloader/ch37p1099downloader/MyDownloader.swift

我们说mainfalse,所以我们在后台线程上进入委托方法。在didFinishDownloadingToURL结束时,已下载文件并等待接收;我们在主线程上调用调用者来告诉他们。我们必须使用sync,因为如果我们不这样做,我们的后台线程将会完成,下载的文件将在调用者有机会获取之前销毁。