“一个菜鸟的自我修养,就是在低级职位上不抓狂,当一个优秀的菜鸟,就是为了有一天不当菜鸟。瞅准机会迅速脱离菜鸟轨道,然后一路飞翔到世界的尽头。“
接下来系统的学习下并发编程,会有几篇吧,不多说,走起!
简介:
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.异步设计技术:
通过确保主线程自由响应用户事件,并发可以很好地提高应用的响应性;
通过将工作分配到多核,提高应用处理性能;
会带来额外开销,代码也会复杂,难以编写和调试;
总结:
这部分内容其实包含了所有相关的内容,待学习完各部分内容,建议回顾下。