什么是线程?
进程是工厂,线程是工厂里的流水线,一个线程就是一个 “执行流”. 每个线程之间都可以按照顺讯执行自己的代码. 多个线程之间 “同时” 执行着多份代码
为啥要有线程?
(1)并发编程
单核 CPU 的发展遇到了瓶颈. 要想提高算力, 就需要多核 CPU. 而并发编程能更充分利用多核 CPU
资源.
有些任务场景需要 “等待 IO”, 为了让等待 IO 的时间能够去做一些其他的工作, 也需要用到并发编程
(2)线程比进程轻量
创建线程比创建进程更快.
销毁线程比销毁进程更快.
调度线程比调度进程更快
引入进程的目的
是为了能够实现多个任务 并发执行的效果。
但进程有个缺陷:如果频繁的创建/销毁进程,成本比较高。
只有在进程启动,创建第一个线程的时候,需要花成本去申请系统资源。
一旦进程(第一个线程)创建完毕后,在创建其他的线程,就不必再去申请系统资源了,所以 创建/销毁 的效率就提高了
进程和线程区别
1.进程包含线程
2.进程有自己独立的内存空间和文件描述符表。
3.一个进程里有着一个或多个线程,它们之间共用一份系统资源。
4.线程 是操作系统 调度运行 的基本单位
进程 是操作系统 资源分配 的基本单位
5.进程之间具有独立性,一个进程的崩溃不会影响到其他进程。
6.同一进程的多个线程之间,一个线程崩溃会影响到整个进程,进而影响到其他线程
7.每个线程都是一个独立的执行流,也是并发执行的
8.操作系统真正调度的是在调度线程而不是进程。