美文网首页
[ios]浅谈gcd

[ios]浅谈gcd

作者: extanstory | 来源:发表于2017-02-17 12:00 被阅读0次

gcd是苹果推出的多线程处理技术。
什么是线程呢,线程是cpu执行的汇编指令集合,由于一个cpu一次只能执行一个命令,不能在某处分开并行2个命令,因此通过cpu执行的cpu命令列就好比一条没有分叉的路。

现在的物理cpu芯片实际上有64个(64核)cpu,如果一个cpu核虚拟成2个cpu工作,那么pc上使用多个cpu核是很常见的。

osx和ios核心xnu内核在发生系统操作事件时会切换执行路径。执行路径的状态(例如cpu寄存器等信息保存到各自路径专用的内存快中,从切换目标路径专用的内存块中,复原cpu寄存器等信息,继续执行切换路径的cpu命令列,这被称为“上下文切换”。)

正是这么的反复多次在上下文中切换就看上去是一个cpu在执行多个线程一样,对于多核cpu是真正的在执行多个线程,而不是看上去像。

1.Dispatch Queue 队列(fifo)分为Serial Diapatch Queue (单)和 Concurrent Dispatch Queue(多)
2.dispatch_queue_creat 通过gcd的api生成的使用到creat的所以API都要 记得释放。dispatch_release,
对main和globel进行release和retain不起作用。所以使用它们2个时不用release。线程分为4个等级。但是没什么用。
3.dispatch_set_target_queue设置其等级。该等级还可以作为Dispatch Queue的执行阶层。
4.dispatch_after 等待多久后追加block到queue中。
5.dispatch_group 多个处理全部结束和想执行结果处理。用notify回调UI线程。
6.dispatch_barrier_async 栅栏,可避免数据竞争的问题。
7.dispatch_apply 多次执行某一个任务。
8.dispatch_suspend/resume 线程挂起和恢复。(ios10.1出现了dispatch_cancel)
9.dispatch_semaphore 数据竞争处理,比6中的栅栏颗粒度高。
10.dispatcch_once 百分百只执行一次
11.dispatchi/o 读取大文件时,将文件分成段读取。
12.dispatch source 系统内核发生各种事件时,在应用程序编程方执行处理的技术。(例如 文件的读取,定时器、接收信号等)

想详细了解去看看小日本写的那本《多线程与内存管理》哈。小日本的东西写的就是好,不服不行啊。

相关文章

  • [ios]浅谈gcd

    gcd是苹果推出的多线程处理技术。什么是线程呢,线程是cpu执行的汇编指令集合,由于一个cpu一次只能执行一个命令...

  • Paper Collection - Multithread

    关于iOS/OS X线程安全的基础知识(cocoaChina的文章) GCD使用经验与技巧浅谈 互斥锁pthrea...

  • iOS面试攻略,浅谈多线程开发2(GCD)

    之前写了一篇多线程开发的iOS 面试攻略,浅谈多线程开发1但是没有跟大家聊GCD 就是想把GCD单独放在一篇文章跟...

  • 浅谈iOS进阶路线

    浅谈iOS进阶路线 浅谈iOS进阶路线

  • GCD

    相关链接GCD使用经验与技巧浅谈

  • iOS开发多线程之GCD

    iOS开发多线程之GCDiOS开发之GCD同步任务加强iOS开发之GCD串行队列iOS开发之GCD并发队列 GCD...

  • iOS之浅谈GCD

    GCD的基本思想 GCD的基本思想是将操作放在队列中去执行(1)操作使用block定义。(2)队列负责调度任务执行...

  • iOS内功篇:浅谈Crash

    iOS内功篇:浅谈Crash iOS内功篇:浅谈Crash

  • [iOS 多线程] iOS多线程-GCD

    iOS多线程-GCD GCD的简介 GCD,全称为 Grand Central Dispatch ,是iOS用来管...

  • 浅谈GCD

    浅谈GCD1.什么是GCDGCDGrand Central Dispatch (GCD)是Apple开发的一个多核...

网友评论

      本文标题:[ios]浅谈gcd

      本文链接:https://www.haomeiwen.com/subject/kkbkwttx.html