GCD介绍

来源:互联网 发布:spss软件安装教程 编辑:程序博客网 时间:2024/04/28 18:03

GCD


1.GCD是什么

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


2.优势


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


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


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


3.了解一下GCD术语


Serialvs. Concurrent


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


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

自定义队列


0 0
原创粉丝点击