【iOS】从实际出发理解多线程(一)

多线程是开发中一个很重要的模块,但在不少时候,尤为是刚开始开发时理解的不是很透彻,只有在慢慢地积累后,才能更好地理解它。在如今闲的时候,我就把个人理解说一下。微信

本篇文章就先讲一下一些概念,接下来的几篇文章会分开讲述多线程的详细内容。多线程

容易混淆绕晕的概念:并发

进程:进程是线程的容器,你打开一个APP就是打开了一个进程。微信有微信的进程,微博有微博的进程。一个进程能够包含多个线程。异步

通俗理解进程就是一条高速公路,线程就是高速路上的一条条车道。也就是由于这些车道,整个交通的运行效率变得更高,也正是觉得有了多线程,系统的运行效率变得更高。spa

线程:线程是在进程中咱们开辟的一条条为咱们作事的进程实体,通俗来讲,线程就是咱们在进程上开辟的一条条作咱们想作的事的通道。一条线程在一个时间点上只能作一件事,多线程在同一时间点上就能作多件事。线程

通俗理解一条高速公路是一个进程,一条条车道就是不一样的线程,再过收费站时,这条进程要是只有一条线程,即一条高速公路上只有一个车道,那就只能排队一辆一辆经过,同一时间不能有两辆车一块儿过去。可是若是一个进程上有多个线程,即一条高路公路上有多个车道,这样同一时间就彻底可能有多辆车一块儿经过了。blog

同步线程:同步线程会阻塞当前的线程去执行同步线程里面想作的任务,执行完以后才会返回当前线程。队列

异步线程:异步线程不会阻塞当前的线程去执行异步线程里想作的任务,由于是异步,因此他会从新开启一个线程去作任务。进程

队列:队列是用来管理下面所说的任务的,它采用的是先进先出(FIFO)的原则,他衍生出的就是并行和串行队列,一个线程上能够有多个队列。内存

并行队列:这个队列里的任务是能够并发(同时)执行的,因为同步执行任务不会开启新的线程,因此并行队列同步执行任务只会在一条线程里面同步执行任务。又因为同步执行也就在在当前线程中作事,这是就须要一件一件的作任务(作完一个在作下一个)。单要是并发队列异步执行,就对应着开启异步线程执行要作的任务,就会同一时间有不少的任务被作着。

串行队列:这个队列里的任务是串行,也就是一件件执行的,串行同步会一件一件的等任务作完再接着作下一件,要是异步就会开启一条新的线程串行执行咱们的任务。

任务:就是咱们须要作的事。

同步任务:不须要开启新的线程,在当前线程执行就能够。

异步任务:须要开辟一个新的线程去异步的执行这个任务。

iOS中还有一个特殊的串行队列--主队列,这个主队列中还有一个特殊的线程--主线程

主线程:又名UI线程,顾名思义主要的任务就是及时处理UI,也只有主线程有处理UI的能力,其余的耗时操做咱们就放在子线程(即开辟线程)去执行,开线程也会占据必定的内存,因此不要同时开启不少个线程。

相关文章
相关标签/搜索