新手在刚学习的时候不知道线程和进程的区别,在这里先给大家普及一下。
每一个运行在系统中的应用程序,都有一个进程。进程是独立的,有着自己专属运行空间。进程的出现是为了解决多任务处理系统的问题。
首先看看单任务处理系统的示意图:
PU按顺序执行任务1,任务2,任务3.... 前面的任务没有执行完,后面的任务是没法执行的。任务4哪怕再紧急,用的时间再短,也要等前面费时的任务3执行完才能轮到它。想象一下,你在听音乐的时候,想看视频,那就先把音乐听完才能去看,如果这样我估计你会疯掉吧。不过计算机刚刚出现的时候,系统就是单任务的。
任务1,任务2.....这里所说的任务 也就是运行在iOS系统中的app
幸好,多任务处理系统来了。
时间片(每个进程被分配一时间段,称为时间片,即进程允许执行的时间)。
注意:因为时间片的时间很短,CPU执行的速度非常快,每个任务几乎都能得到响应并执行。造成这些任务同时运行的假象。实际上在单个时间片内,只有一个任务在执行。
这里我们可以看出,进程是伴随多任务处理系统出现的一个产物。满足了我们阅读的同时,又想听音乐的愿望。
每个app对应一个进程,系统协调进程之间的关系。但是在app内部,也有很多的不同的操作,有些操作是紧急的,有些操作是耗时的。
那么如何合理的安排这些操作呢?线程应运而生。原理与以上进程的协调是相似的。
所以有时候称线程为轻量级进程。
线程是进程中一个独立的执行路径(控制单元),一个进程中至少包含一条线程,即主线程我们可以把耗时的操作放在别的线程中执行UI相关的操作都在主线程中,所以要在主线程中更新UI。
以淘宝为例,页面上有很多的图片,如果在主线程中下载图片,那么页面就会非常的卡。所以会把下载图片和耗时的操作放在别的线程。
优点:
缺点:
误区:
多线程技术只是并发的执行任务,让优先级更多,更紧急的操作得到响应,并不会提高单个算法的执行效率。
线程和进程的区别相信大家看到这里,应该心里有了比较了吧,这合适的时候灵活的运用线程和进程,会大大的提高你的稳定性和优化的。