您的位置:首页 > 移动开发 > IOS开发

GCD介绍

2014-04-15 14:11 691 查看

GCD

1.GCD是什么

GrandCentral Dispatch简称(GCD)是苹果公司开发的技术,以优化的应用程序支持多核心处理器和其他的对称多处理系统的系统。这建立在任务并行执行的线程池模式的基础上的。它首次发布在MacOS
X 10.6 ,iOS4及以上也可用。

2.优势

利用推迟昂贵的计算任务并且在后台运行来改善你的app响应能力。

提供了比locks和threads更加简单的并发模型,有助于避免并发时导致的bug

对于相同的模式,比如单例,GCD潜在的优化你代码的性能

3.了解一下GCD术语

Serialvs. Concurrent

serial:又称为privatedispatch
queues,同时只执行一个任务。Serialqueue通常用于同步访问特定的资源或数据。当你创建多个Serialqueue时,虽然它们各自是同步执行的,但Serialqueue与Serialqueue之间是并发执行的。

Concurrent:又称为globaldispatch
queue,可以并发地执行多个任务,但是执行完成的顺序是随机的。

Maindispatch queue

它是全局可用的serialqueue,它是在应用程序主线程上执行任务的。

Synchronousvs. Asynchronous

在GCD中,这两个术语描述了当函数去完成响应函数允许GCD执行的另一个任务。

Sychronous:任务顺序完成后,才返回
Asynchronous:一旦任务完成不需要等待,立即返回。然后,不会阻塞当前执行的线程

临界区(CriticalSection)

不能被并发进行的一段代码,管理共享资源

竞争条件(racecondition)

软件系统的行为,依赖于特定的顺序或者执行不可控制行为事件

死锁(Deadlock)

多个线程互相等待另一方去执行或完成另一个行为
第一个没完成等待第二个;第二个没完成等待第一个

ThreadSafe(线程安全)

多线程或并发任务不会引发问题

ContextSwitch(环境切换)

你在同一个过程中切换执行不同的线程,也就是存储回恢复执行的过程。

Concurrencyvs Parallelism

Concurrencymeans that two or more calculations happen within the same timeframe, and there is usually some sort of dependency between
them.
Parallelismmeans that two or more calculations happen simultaneously.
并发
vs
并行



Queus:

1.FIFO
2.线程安全

Serialqueues



ConcurrentQueues



QueueTypes

mainqueue
主队列刷新页面
GlobalDispatch
优先级:background,low,default,high
自定义队列
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ios GCD 线程 并发