(四十二)什么是线程?它与进程有什么区别?为什么要使用多线程
关系:
区别:
线程:又称为“轻量级进程”,是操作系统能够进行运算调度的最小单位,被包含在进程中,是进程中实际运行单位。
进程:系统进行资源分配和调度的基本单位。
进程与线程区别:
- 进程是资源分配的最小单位,线程是程序执行的最小单位
- 进程创建与切换:进程有自己的独立地址空间,每启动一个进程,系统就会为它分配地址空间,这种操作非常昂贵。而线程是共享进程中的数据的,使用相同的地址空间,创建一个线程的开销也比进程要小很多,CPU切换一个线程的花费远比进程要小很多。
- 线程通信:线程之间的通信更方便,同一进程下的线程共享全局变量、静态变量等数据,而进程之间的通信需要以通信的方式(IPC)进行。
- 进程死掉与线程死掉区别:但是多进程程序更健壮,多线程程序只要有一个线程死掉,整个进程也死掉了,而一个进程死掉并不会对另外一个进程造成影响,因为进程有自己独立的地址空间。
线程好处:
①使用线程可以减少程序的响应时间。
单线程:程序执行过程中只有一个有效操作的序列,不同操作之间都有明确的执行先后顺序。
如果某个操作很耗时或陷入长时间的等待(如等待网络响应),此时程序将不会响应鼠标和键盘灯操作。
使用多线程后,可以把这个耗时的线程分配到一个单独的线程去执行,从而使程序具备了更好的交互性。
②与进程相比,线程的创建和切换开销更小
线程共享代码段、数据段,线程的启动或切换的开销比进程要少很多。
③多CPU或多核计算机本身就具有执行多线程的能力
④使用多线程能简化程序的结构,使程序便于理解和维护。一个非常复杂的进程可以分成多个线程来执行