objective-c - 使用主线程的队列从主线程Dispatch_sync没用吗?

标签 objective-c ios multithreading

我只想确认我的理由,即使用主队列从UI线程(主线程)执行dispatch_sync完全没有用。

除此之外,异步将是无用的,但有一种幻想,即它不会阻塞,因此很有用。

让我知道。

谢谢

最佳答案

同一队列中的dispatch_sync不仅无用,而且会锁定您的应用程序。 dispatch_sync说:“调度一些东西,但是在另一个队列响应之前,不要在该队列上继续进行”。如果“其他”队列(我们正在等待它完成调度的块)与“此”队列(直到其他队列响应才被阻塞)相同,则显然不会发生这种情况。您的应用程序将冻结,等待自身!

另一方面,将dispatch_async放在您当前所在的队列中通常不是非常有用的构造,但至少不会冻结。我已经看到了一些尴尬的代码,这些代码本身使用了dispatch_async来表示“一旦完成一系列操作,我便想做其他事情”。在无法用另一种方式优雅地完成调度的情况下,我很少见到这种异步调度的方法,但是我已经看到了。

关于objective-c - 使用主线程的队列从主线程Dispatch_sync没用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13784248/

相关文章:

ios - Facebook(4.6)/Parse(1.9.1) 登录不工作

用于跟踪第一次的 Objective-C 实例变量

ios - 自定义 Segue 后退按钮使应用程序崩溃

java - 如何并行调用独立函数并在使用 CompletableFuture 失败时抛出异常

java - 被 java NIO Selector.select() 阻塞的线程应该被视为等待还是正在运行

ios - 标题未使用 json 设置。 objective-c

objective-c - KVO : UITableViewCell observing model property - how to unregister when model deallocs?

ios - 如何创建渐变

ios - 如何从 DetailViewController 重新加载 MasterView Controller TableView

Java - 运行一个线程两次