线程和进程的区别

来源:互联网 发布:网络黄金egd今日价格 编辑:程序博客网 时间:2024/06/06 06:42

线程的划分尺度要比进程小,一个进程里面可能会包含有多个线程,当多个线程并发运行的时候可以提高程序的运行效率(多个线程一起共享内存)。但是在操作系统里面,线程是不会被单独划分出来独立地占用一个资源空间的。每一个线程都会有一个属于自己的入口,执行顺序,出口。线程不能够单独地存在,它们都是要依靠其他的程序块通过相应的方法来进行调用的,这也是线程和进程的重要区别。

对于进程而言,就可以理解为是很多个线程的集合,一个进程里面含有多个线程,每一个进程都是一个独立的实体,在操作系统里面都会独立地占用某一块资源区域。这一点相对于线程来说是不一样的,进程所拥有的资源要比线程大得多,线程所拥有的资源相当的少(但是也并非没有,例如说程序计数器,寄存栈器和栈,这些都需要资源来运行)。

进程和线程的主要区别还是在于操作系统资源管理方式。进程有着自己独立地地址空间,一个进程崩溃之后,在保护模式之下,不会破坏到其他的进程。但是线程却不一样,一个线程要是被破坏了,就有可能会破坏到了其他的几个线程,导致整个进程都出现崩溃的现象(原因是:操作系统里面的保护模式会去保护每一个进程,但是线程有着自己的堆栈和局部变量,不同的线程都共享相同的内存空间)。所以大多情况下多进程的程序要比多线程的程序健壮性更佳。但是多进程在进行进程的切换时,耗费的资源会比较大,所以它们的效率会相对差一些。