SDWebImage在其SDWebImageManager的图像下载代码中使用以下代码。为什么有必要检查线程是否是主线程,而不是不管dispatch_sync如何?在dispatch_sync之前需要检查一个线程是否是主线程?
#define dispatch_main_sync_safe(block)\
if ([NSThread isMainThread])\
{\
block();\
}\
else\
{\
dispatch_sync(dispatch_get_main_queue(), block);\
}
它可能不是。 – matt
@matt,因为这是同步呼叫,所以至关重要。正如Martin指出的那样,如果你从主线程向主队列发送'dispatch_sync',应用程序将会死锁! – Rob
@Rob我想到了,但后来我无法相信会发生这种情况... – matt