-
GCD
- 抽象程度最高。
- 两种队列开箱即用:main 和 global。
- 可以创建更多的队列(使用 dispatch_queue_create)。
- 可以请求独占访问(使用 dispatch_barrier_sync 和 dispatch_barrier_async)。
- 基于线程管理。
- 硬性限制创建 64 个线程。
-
NSOperationQueue
- 无默认队列。
- 应用管理自己创建的队列。
- 队列是优先级队列。
- 操作可以有不同的优先级(使用 queuePriority 属性)。
- 使用 cancel 消息可以取消操作。注意,cancel 仅仅是个标记。如果操作已经开始
执行,则可能会继续执行下去。 - 可以等待某个操作执行完毕(使用 waitUntilFinished 消息)。
-
NSThread
- 低级别构造,最大化控制。
- 应用创建并管理线程。
- 应用创建并管理线程池。
- 应用启动线程。
- 线程可以拥有优先级,操作系统会根据优先级调度它们的执行。
- 无直接 API 用于等待线程完成。需要使用互斥量(如 NSLock)和自定义代码。
对 NSThread、NSOperationQueue 和 GCD API 的一个快速比较
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 线程:大家最熟悉的就是这个GCD的线程了.dispatch_async(dispatch_get_global_q...
- 一、多线程简介: 所谓多线程是指一个 进程 -- process(可以理解为系统中正在运行的一个应用程序)中可以开...
- 前言: 我负责努力,其余交给运气。 正文: 闲暇之余,把线程的问题整理一下,感觉可能会有点长,所以先自分一下章节,...
- 本文的主要目的是介绍NSThread、GCD、NSOperation常见的使用方式。 NSThread NSthr...
- 前言: 最近想回顾一下多线程问题,看到一篇文章写的非常详细,为了便于以后查找以及加深印象,就照着原文摘录了下文,原...