进程和线程的区别和联系:
- 进程包含线程,一个进程里可以有一个线程,也可以有多个线程。
- 进程和线程都是为了处理并发编程这样的场景。但是进程由于频繁的创建进程和释放,导致效率低;相比之下,线程更轻量,创建和释放效率更高
- 操作系统创建进程,要给进程分配资源,进程是操作系统分配资源的基本单位。操作系统创建的线程,是要在CPU上调度执行,线程是操作系统调度执行的基本单位。
- 进程具有独立性,每个进程有各自的虚拟地址空间,一个进程挂了,不会影响到其他进程。反之,一个线程挂了,可能会影响到其他线程,甚至导致整个进程崩溃。因为同一个进程中的多个线程,共用一个内存空间。
这里我们可以举一个工厂的例子,对于一个工厂来说,一个工厂有多条生产线,如果其中有生产线奔溃了,则可能会影响这个工厂的其他生产线。
而如果工厂倒闭了,则不会对其他的工厂产生影响,因为它们没有竞争关系。
这里的工厂就可以比喻成进程,而生产线则是线程。
创建一个工厂所费的时间和精力远远比创建一条生产线低。同理,线程的创建和释放比线程的创建和释放效率更低。因此线程更轻量。