基于进程而来的多线程解决了进程的一些问题,它能够节省频繁创建和销毁进程带来的资源消耗。进程是资源分配的基本单位。而线程则是资源调度的基本单位。一个进程可以包含多个线程。它们是如何做到节省的呢?:在原来,只有一个进程的时候,当执行完一个任务后,进程就会销毁,而要执行新的任务时就要重新创建。而有线程之后,进程就负责创建一个进程,然后再进行资源分配,线程则负责进行调度执行,这样任务结束后,就不必要销毁进程,而是销毁对应线程,再次创建线程时也不必要再次创建新的进程,(进程会在创建的时候加载所需数据和指令,后来创建的线程则是调用这些)节省了不小的开支。
同一个进程中的线程可能会对其他线程造成影响,其中一个出现异常,(就可能导致其中的内存空间,文件描述符受影响,而进程中的这些是共享的,不同的进程之间这些资源则相互独立)就可能影响到其他的线程,从而导致进程异常终止
下面是总结:
1:进程是包含线程的,进程是资源分配的基本单位,线程是调度执行的基本单位。
2:每个线程是一个独立的执行流,并且单独的参与到cpu调度中(状态,上下文,记账信息,每个都有自己一份)。
3:每个进程,有自己的资源,进程中的线程共用这一份资源(内存空间和文件描述符)。
4:进程和进程之间不会相互影响和,如果一个进程的某个线程,抛出异常,可能会影响到其他线程,从而使进程中的其他线程都异常终止。
5:同一个进程的线程之间可能会互相干扰,引起线程安全问题。
6:线程并不是越多越好,要能合适,如果太多,调度开销就很明显。