iOS并发编程(一)-简介

来源:互联网 发布:网络电视哪个牌子的好 编辑:程序博客网 时间:2024/05/29 19:36

“一个菜鸟的自我修养,就是在低级职位上不抓狂,当一个优秀的菜鸟,就是为了有一天不当菜鸟。瞅准机会迅速脱离菜鸟轨道,然后一路飞翔到世界的尽头。“

接下来系统的学习下并发编程,会有几篇吧,不多说,走起!    

简介:

     1.异步设计方式:

传统并发编程模型是线程,ios采用“异步设计方式”来解决并发的问题;-也就是一个线程中多核的使用,异步实现并发编程;

     2.引入异步线程的方式有两个:

     1)Grand Central Dispatch(GCD):

     系统管理线程,不需要编写线程代码;

     只需要定义想要执行的任务,然后添加到合适的dispatch queue中,GCD负责创建线程和调度;

     2)Operation Queue:

     OC对象,类似dispatch queue;

     定义想要执行的任务,并添加到operation queue,后者负责调度和执行;

     和GCD一样,Operation Queue也管理了线程,较高效;

     3.Dispatch queue:

     基于C的执行自定义任务机制;

     dispatch queue按照先进先出的顺序,串行或并发地执行任务;

     串行:serial dispatch queue一次只能执行一个任务;

     并发:concurrent dispatch queue则尽可能多地启动任务并发执行; 

     优点:

     1)直观而简单的编程接口;

     2)提供自动和整体的线程池管理;

     3)提供汇编级调优的速度;

     4)更加高效的使用内存;

     5)不会trap 内核 under load;

     6)异步分派任务到dispatch queue 不会导致queue死锁;

     7)伸缩性强;

     8)serial dispatch queue比锁和其他同步原语更加高效;

     4.Dispatch Sources:

     Dispatch Source是基于C的系统事件异步处理机制;

     一个Dispatch Source封装了一个特定类型的系统事件,当事件发生时提交一个特定的block对象或函数到dispatch queue;

     可以使用Dispatch Source监控以下类型的系统事件:

     1)定时器;

     2)信号处理器;

     3)描述符相关的事件;

     4)进程相关的事件;

     5)Mach port事件;

     6)你触发的自定义事件;

     5.Operation Queues:

     Operation Queues是Cocoa版本的并发dispatch queue,由NSOperationQueue类实现;

     dispatch queue是按先入先出执行,Operation Queues在执行顺序上,还会考虑其他因素,其中之一就是,指定任务是否依赖于另一个任务的完成;

     在定义任务时配置依赖性,以创建复杂的任务执行顺序图;

     提交到Operation Queues的任务必须是NSOperation对象,operation object封装了要执行的工作,以及所需数据;

     NSOperation是抽象基类,通常需要自定义子类执行任务;

     Foundation framework提供了一些具体的子类,可用于创建并执行相关任务;

     Operation objects会产生key-value observing(KVO)通知,可用于监控进程;

     Operation queue总是并发的执行任务,可以使用依赖,确保顺序执行;

     6.异步设计技术:

     通过确保主线程自由响应用户事件,并发可以很好地提高应用的响应性;

     通过将工作分配到多核,提高应用处理性能;

     会带来额外开销,代码也会复杂,难以编写和调试;


总结:

这部分内容其实包含了所有相关的内容,待学习完各部分内容,建议回顾下。



0 0
原创粉丝点击