一 背景
有天晚上我作为ios工程师的gf突然问我,同步串行队列和异步串行队列有什么区别?作为代码人这些概念我们平时都是觉得是基本问题,但是在回复的时候 我突然觉得有点不太对..
二 知识介绍
2.1 何为同步?
同步我的理解就是任务执行有依赖关系,从结果角度说,这些任务是前后有序的执行结果。
2.2 何为异步?
异步我理解就是任务执行没有依赖关系,从结果角度说,这些任务的执行是无序的。
2.3 何为串行?
串行我的理解就是在多任务在执行过程中 任务是像串起来一样,一个一个任务串起来执行
2.4 何为并行?
并行我的理解就是在多任务的执行过程中 任务是可以同时执行的。
三 区别何在?
其实我认为同步/异步 串行/并行 是对同一个事情 不同的描述角度,同步和串行 描述的都是一个事情,前一个任务执行完毕 后续一个任务才能执行,串行是任务的调度过程 而同步是串行的结果,同理异步/并行 也是一样
四 回到原来的问题,ios 的同步串行队列,和异步串行队列何解?
原来描述的是 ios 的dispatch_sync和 dispatch_async 对应相对概念,同步/异步是ios主队列和执行队列之间调度情况,串行/并行 是执行队列内部任务调度的情况。。。
五 总结
我认为串行/并行的调度方式导致了同步/异步结果的产生