对 NSThread、NSOperationQueue 和 GCD API 的一个快速比较

  • GCD

    • 抽象程度最高。
    • 两种队列开箱即用:main 和 global。
    • 可以创建更多的队列(使用 dispatch_queue_create)。
    • 可以请求独占访问(使用 dispatch_barrier_sync 和 dispatch_barrier_async)。
    • 基于线程管理。
    • 硬性限制创建 64 个线程。
  • NSOperationQueue

    • 无默认队列。
    • 应用管理自己创建的队列。
    • 队列是优先级队列。
    • 操作可以有不同的优先级(使用 queuePriority 属性)。
    • 使用 cancel 消息可以取消操作。注意,cancel 仅仅是个标记。如果操作已经开始
      执行,则可能会继续执行下去。
    • 可以等待某个操作执行完毕(使用 waitUntilFinished 消息)。
  • NSThread

    • 低级别构造,最大化控制。
    • 应用创建并管理线程。
    • 应用创建并管理线程池。
    • 应用启动线程。
    • 线程可以拥有优先级,操作系统会根据优先级调度它们的执行。
    • 无直接 API 用于等待线程完成。需要使用互斥量(如 NSLock)和自定义代码。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容