面试时经常被问到进程与线程的区别,现总结如下。
1.进程是资源分配和调度的独立单元;线程是cpu调度的基本单元。
2.同一进程可以包含多个线程,并且线程共享整个进程的资源(寄存器,堆栈,上下文)
3.进程的创建调用fork或者vfork,而线程的创建调用pthread_create;进程结束后它所拥有的线程都将销毁,而线程结束不会影响同个进程中其他线程的结束。
4.线程是轻量级的进程,它的创建和销毁所需要的时间比进程要小得多,所有操作系统中的功能都是创建线程去完成的。
5.线程执行时一般都要进行互斥和同步,因为他们共享同一进程的所有资源。
6.线程有自己私有的TCB(线程控制块),线程Id,寄存器,硬件上下文,进程也有自己的私有属性PCB(进程控制块),这些属性不被共享,是一个进程或者线程的标志。