GCD归纳
Leonardo_Fibonacci
make it happen make it better
展开
-
01-基本概念
GCD 1 基本概念 概念: 是 Apple 开发的一个多核编程的较新的解决方法。它主要用于优化应用程序以支持多核处理器以及其他对称多处理系统。它是一个在线程池模式的基础上执行的并发任务 优点 多核并行运算 不需要手动管理线程生命周期 自动利用CPU的内核 两个基本点: 任务和队列 任务:执行操作的意思,在block代码块中执行的代码 同步执行 sync :在当前线程中执行任...原创 2018-12-14 18:39:07 · 224 阅读 · 0 评论 -
02-dispatch_barrier
1 dispatch_barrier_async 概念 栅栏方法,暂时的将一部操作做成一个同步操作,向一个栅栏一样的分开 dispatch_barrier_async函数的作用是在进程管理中起到一个栅栏的作用,它等待所有位于barrier函数之前的操作执行完毕后执行,并且在barrier函数执行之后,barrier函数之后的操作才会得到执行,该函数需要同dispatch_queue_create函...原创 2018-12-14 18:39:55 · 161 阅读 · 0 评论 -
03-dispatch_after
1 dispatch_after 概念 在指定时间之后将任务追加到主队列中。严格来说,这个时间并不是绝对准确的,但想要大致延迟执行任务,dispatch_after函数是很有效的。 NSLog(@"currentThread---%@",[NSThread currentThread]); // 打印当前线程 // 延时5秒执行任务 dispatch_time_t tim...原创 2018-12-14 18:40:33 · 235 阅读 · 0 评论 -
04-dispatch_group
dispatch_group 实现线程同步 比如说,第一步我想先下载三张图片,然后第二步再去主线程刷新imgview 显示图片。 利用dispatch_group 来进行实现 ,简单来讲就四行代码. 就可以让代码按照你想要的顺序进行发生。 使用步骤 创建一个dispatch_group_t dispatch_group_t downloadGroup = dispatch_group_cre...原创 2018-12-14 18:41:06 · 209 阅读 · 0 评论 -
05-dispatch_semphore
dispatch_semphore 信号量 dispatch_semaphore信号量为基于计数器的一种多线程同步机制。如果semaphore计数大于等于1,计数-1,返回,程序继续运行。如果计数为0,则等待。dispatch_semaphore_signal(semaphore)为计数+1操作,dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER...原创 2018-12-14 18:41:36 · 187 阅读 · 0 评论 -
06-线程
线程 代码在iPhone 上的执行,源代码通过编译器转换为CPU的命令列。 如下的一个方法就是: 程序启动之后,将程序中的CPU命令列配置到CPU内存中去,CPU从应用中指定的地址开始,一个个的执行CPU的指令命令列。 在OC 中的流控制语句,if else 等,执行命令列的地址会远离当前的位置,位置迁移。 一个CPU 一次只能执行一个命令,不能执行到某处进行分开为两个并列的命令。 线程:一个CP...原创 2018-12-14 18:42:03 · 248 阅读 · 0 评论 -
07-主队列和全局队列
GCD 会主动的提供一个队列供开发者使用。 主队列 系统提供的串行队列 是在主线程执行的队列,所以是串行的队列。任务一个个执行。 dispatch_get_main_queue() 全局队列 系统提供的并发队列 全局队列是所有应用程序都能够使用的并发队列,不需要手动的创建并发队列了。 dispatch_get_global_queue 分为四个优先级 名称 执行方式 备注 ...原创 2018-12-14 18:42:50 · 503 阅读 · 0 评论 -
08-dispatch_apply
1 dispatch_apply dispatch_apply 是按照指定的次数将指定的block 添加到指定的queue当中去。 可以用于快速的迭代 // 获取全局并发队列 dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); // 迭代数组 ...原创 2018-12-14 18:43:13 · 258 阅读 · 0 评论 -
09-dispatch_source
dispatch_source 是BSD系内核惯有的kqueue的包装,kqueue 是XNU内核中发生各种事件时,在应用程序编程中执行处理的技术。 CPU 负荷非常小,尽量不占用资源。 dispatch_queue 和dispatch_source dispatch_source 是可以取消的,取消也是有对应的回调的。 dispatch source的种类 名称 内容 DISPA...原创 2018-12-14 18:43:36 · 224 阅读 · 0 评论