1.啥是多进程
多进程是通过我们写特殊的代码,把cpu的多个核心都能利用起来,这样的代码成为“并发编程”。多进程编程就是一种典型的并发编程。
但是多进程有一个很大的问题----->>进程太重了,在进程创建和销毁进程的时间和空间开销较大。一旦需求场景,需要频繁的创建和销毁进程,开销就过于庞大了。典型应用有服务器开发,针对每个发送请求的客户端,服务端都要创建一个单独的进程,由这个进程给客户端提供服务。
进程是系统“资源分配”的基本单位。
2.线程(Thread)
为了解决多进程带来的开销过大问题,就有了“线程”这一发明。“线程”可以理解为更加轻量级的进程。也能解决并发编程的问题,但是创建/销毁的开销,比进程要低。因此多线程编程变成了当下主流的并发编程方式。线程是系统“调度执行”的基本单位。
一个线程只能属于一个进程,而一个进程可以有多个线程。如果有多个线程在一个进程中,每个线程,都会有自己的状态,优先级,上下文,记账信息,每个都会各自独立的在cpu上调度执行。
3.进程包含线程
一个可执行程序,运行的时候,操作系统就会创建进程,然后给这个进程分配各种资源(cpu,内存,网络...);同时也会在这个进程中创建一个或者多个线程,这些线程再去cpu上调度执行。
进程包含一个线程或多个线程。在进程创建后会自动创建一个至少一个线程。这些在同一个进程中的线程是共用一份资源的。
比如说喝水,需要喝完指定容量的水,水是由杯子盛放的。
多进程的处理方式:将水分为多份,然后由多个人一起喝。但是增加的需要的水杯数量,多出来的水杯这就相当于是进程的创建与销毁花费的资源。
图示:
这些多出来的水杯就是增加的资源花费。但是多线程是一个水杯许多人一起喝。多个人就相当于多个线程。
图示:
这样就直观的看出了线程花费更小并且具备并发的功能。