完美理解iOS GCD同步和异步线程 串行队列和并行队列

如果你不懂进程和线程,队列等概念,请参考这篇文章,说的很清楚

https://www.cnblogs.com/hrios/p/thr.html#undefined

这里主要帮助理解同步和异步线程 串行队列和并行队列

同步和异步的区别:

同步任务优先级高,在线程中有执行顺序,不会开启新的线程。 

异步任务优先级低,在线程中执行没有顺序,看cpu闲不闲。在主队列中不会开启新的线程,其他队列会开启新的线程

串行队列和并行队列

串行队列: 队列中的任务只会顺序执行

并行队列: 队列中的任务通常会并发执行

那么当串行和并行,同步和异步拼接到一起,是什么意思呢,给你举个生活中的例子

我们先说队列

当你去飞机场时,会在取登机牌处排队,这时候我们都会事先排成一队,注意:是排成一队。这就叫做队列。

然后说串行队列的同步和异步

串行同步

假如你排队取登机牌时候拿着大包小包,如果是串行,那么安检口就开了一个(因为是串行),所有人都在这取登机牌,如果是同步,你就会走一个流程,放下你的行李,让我检查一下,谁知道里面是什么。好的,经过一番查找我发现你的行李没有问题,拿好你的登机牌,走吧。然后下一个,再下一个...

串行异步

那么现在取登机牌是什么样子呢,当你取登机牌时,行李直接放上去,我就给你登机牌,好了,拿着你的登机牌可以走了。根本不需要检查你的行李。然后下一个继续重复,这就叫串行异步。完全不需要等上一个的结果出来。当办理登机牌手续到第10个人的时候,后台发现第一个人行李有问题,那么就会打电话给第一个人,你的行李有问题。但并没有影响中间人办理,对吧。

我们再说并行队列的同步和异步

并行同步

办理登机牌的窗口只有一个,这样太慢了,怎么办。开启多个窗口,同时办理登机牌手续,这个就叫做并行(多个窗口同时办理)。那么并行同步呢,跟上面原理就一样了,每个人窗口都需要检查行李是不是有问题,检查好了以后,确认没有问题,才给你登机牌。再办理下一个。

并行异步

那么这个就很好理解了,每个窗口根本不需要检查行李,直接给你登机牌,然后中间发现哪个有问题,再打电话或者以什么方式通知。

显然,这种方式是最快的。那么现在的飞机场就是这样的,对吧。

以上例子也是个人总结,不对的地方请指出,谢谢

你可能感兴趣的:(完美理解iOS GCD同步和异步线程 串行队列和并行队列)