-
GCD
- 抽象程度最高。
- 两种队列开箱即用:main 和 global。
- 可以创建更多的队列(使用 dispatch_queue_create)。
- 可以请求独占访问(使用 dispatch_barrier_sync 和 dispatch_barrier_async)。
- 基于线程管理。
- 硬性限制创建 64 个线程。
-
NSOperationQueue
- 无默认队列。
- 应用管理自己创建的队列。
- 队列是优先级队列。
- 操作可以有不同的优先级(使用 queuePriority 属性)。
- 使用 cancel 消息可以取消操作。注意,cancel 仅仅是个标记。如果操作已经开始
执行,则可能会继续执行下去。 - 可以等待某个操作执行完毕(使用 waitUntilFinished 消息)。
-
NSThread
- 低级别构造,最大化控制。
- 应用创建并管理线程。
- 应用创建并管理线程池。
- 应用启动线程。
- 线程可以拥有优先级,操作系统会根据优先级调度它们的执行。
- 无直接 API 用于等待线程完成。需要使用互斥量(如 NSLock)和自定义代码。
网友评论