gcd中的串行,并行,同步,异步详解
1、gcd中同步与异步的区别:
gcd中的线程是由一个线程池来管理的,这个池中存放的是一个个的线程。之所以称为“池”,很容易理解出这个“池”中的线程是可以重用的。
如果任务是线程同步的,那么会等待当前线程执行完毕之后,再从池子中拿出一条线程。所以同步的过程中只有一条线程执行任务。
如果任务是线程异步的,队列中的任务不需等待当前任务执行完毕就可以调度下一个任务,这时底层线程池中会再次提供一个线程供第二个任务执行,执行完毕后再回到底层线程池中。
总结:
串行同步:任务按顺序执行,整个过程只会开一条线程。
串行异步:任务按顺序执行,因为是串行所以也只会开一条线程。
并行同步:任务不按顺序执行,整个过程只开一条线程。
并行异步:任务不按顺序执行,整个过程可能有多条线程。
为了提高效率建议最多开3~5条并发线程。