不少刚看到这两个词(特别是不是计算机专业的)小伙伴可能会比较疑惑,线程和进程有什么区别,网上有许多专业性的解答,但是既然不少小伙伴不是计算机专业的,那就结合例子做个大概框架性的解释。
进程是什么:
从用电脑的角度上来讲可以看作是在电脑上运行的不同的软件,每个运行的软件就是一个不同的进程。
线程是什么:
进程的颗粒度太大,每次的执行都要进行进程上下文的切换。如果我们把进程比喻为一个运行在电脑上的软件,那么一个软件的执行不可能是一条逻辑执行的,必定有多个分支和多个程序段,就好比要实现程序A,实际分成 a,b,c等多个块组合而成。那么这里具体的执行就可能变成:
程序A得到CPU =》CPU加载上下文,开始执行程序A的a小段,然后执行A的b小段,然后再执行A的c小段,最后CPU保存A的上下文。
这里a,b,c的执行是共享了A进程的上下文,CPU在执行的时候仅仅切换线程的上下文,而没有进行进程上下文切换的。进程的上下文切换的时间开销是远远大于线程上下文时间的开销。这样就让CPU的有效使用率得到提高。这里的a,b,c就是线程,也就是说线程是共享了进程的上下文环境,的更为细小的CPU时间段。线程主要共享的是进程的地址空间。
所以简而言之,线程就相当于在一个软件内运行的不同功能模块所对应的程序段。
本文参考自下述文章,仅为帮助理解,无商业用途
。