multithreading - 使用 DispatchGroup 和 NSRecursiveLock 有什么区别(优点和缺点)?

标签 multithreading grand-central-dispatch nslock

使用 DispatchGroupNSRecursiveLock 有什么区别(优点和缺点)?

看起来他们在做完全相同的事情。

最佳答案

锁和组的用途截然不同。在处理一系列并发任务时:

  • 锁通常用于防止/阻止这些任务同时与一些共享的、非线程安全的资源交互。

  • 组通常用于标识这些并发任务何时全部完成(无论它们完成的顺序如何)。

例如,如果并行处理一系列图像,您可能会使用锁或类似机制来更新某些属性(例如结果数组),而调度组用于了解所有这些并发任务何时完成完成了。

关于multithreading - 使用 DispatchGroup 和 NSRecursiveLock 有什么区别(优点和缺点)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58106347/

相关文章:

java - 生产者 - Java 中的消费者多线程

ios - 为什么将我的对象添加到NSMutableArray无法正常工作?

ios - 点击时更改 UICollectionViewCell 内的 View 不起作用

iphone - 使用 [ALAssetsLibrary enumerateGroupsWithTypes :] 时的 Cocoa 线程同步

ios 基于 key 创建写锁

c - 当线程释放它的资源

linux - 即使异步 I/O 操作挂起,也只有处理 io_service 的线程在等待

multithreading - 什么时候需要在 TThread 中进行同步?

ios - 如何在分配或泄漏工具中找到 Objective-C block

multithreading - 在 Cocoa 中从不同线程锁定和解锁信号量