从单线程到多线程:理解串行与并行,并发

22 阅读1分钟

其实串行,并行,并发他们实际上就是任务如何被调度、如何利用计算资源,以及如何影响程序的行为

同步方法执行的同步操作一定是串行方式在同一个线程中发生,通俗来说做完一件事情,在做另外一件事情 例如 syncloaddata -> refreshUI -> printSuccess 但是同步方法执行的操作,是串行的充分非必要条件,异步操作也可能是串行的方式执行的, 例如我们有个操作, 如下图

image.png 数据1和2的加载虽然是异步的,但是依然是串行操作,merge数据必定发生在数据加载之后。

实际上数据1和2的加载没有任何关系,完全可以是并行操作,在数据加载完成之后进行merge,在GCD中可以使用DispatchGroup或者DispatchSemaphore来实现

image.png 像这样的两个异步操作,对多个操作同时执行,我们称之为并行. 在计算机中,并发指的是多个计算同时执行的特性,若干个操作同时执行,开始和结束之间存在重叠,同一个线中的多个操作交替运行叫做并发,并发的任务必定是并行的,所以在Swift并发一般都指异步和并行代码的组合,其实是逻辑上并行,在物理上交替执行。