ios – 如果必须等到主线程完成,使用dispatch_sync有什么好处?

如果块必须等到主线程完成,为什么有人会使用dispatch_sync.使用此函数的好处是什么,而不是在线编写代码(非块和在Grand Central dispatch之外).我可能误解了dispatch_sync实际上做了什么.谢谢.

解决方法

dispatch_sync执行您的想法 – 它将块发布到指定队列并阻止当前队列,直到执行该块为止.主队列/线程没有特别涉及,除非您要么调度它或从它调度.

因此,如果必须在不同的队列/线程上执行操作(例如sqlite或OpenGL操作),您通常会使用它,但是您需要操作的结果,或者只需要知道操作已完成功能条款.

模式:

dispatch_async(otherQueue,^{
           id result = doHardTask();

           dispatch_async(originalQueue,^{
                     didGetResult(result);
               });
    });

是更好的练习,但实际上并不是你可以粘贴在最后的东西.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...