杂谈(第1篇) | 进程、线程、协程的区别与联系

作为程序员,在面试的时候经常被问到:说说进程、线程、协程的区别。下面我们就总结一下。

1.面试答案

    1.1  进程与线程的区别

总述:线程是进程的一个实体,一个进程至少有一个线程。

1.根本区别;进程是操作系统资源分配的基本单位;线程程是任务调度和执行的基本单位

2.地址空间:同一进程内的线程是共享本进程的地址空间的;而进程之间是相互独立的地址空间

3.共享资源:同一进程内的线程共享本进程的资源如内存、I/O、cpu等,但是进程之间的资源是独立的

4.健壮性:在保护模式下,一个进程的崩溃不会对其他进程产生影响,但是一个线程崩溃会导致整个进程都死掉。

5.切换开销:每个进程都有独立的代码和数据空间(程序上下文),进程之间的切换会有较大的开销;线程可以看做轻量级的进程,同一进程内的线程共享代码和数据空间,每个线程仅仅有自己独立的运行栈和程序计数器(PC),线程之间切换的开销小。

   1.2  进程线程与协程的区别

总述:进程、线程都是操作系统的概念,资源分配和任务调度都是由操作系统完成;协程程序级别的,协程的调度是由用户控制的,cup根本不知道协程的存在

1. 线程进程都是同步机制,而协程则是异步的

2.协程能保留上一次调用时的状态,每次过程重入时,就相当于进入上一次调用的状态。

如果只问进程协程区别,只需答1.1 即可,如果问进程线程协程区别,则回答1.1 和 1.2 

猜你喜欢

转载自blog.csdn.net/tylitianrui/article/details/83050036