1.并发编程
将CPU的多个核心都利用起来的编程方式称为并发编程。多进程编程和多线程编程,都属于并发编程。
多进程编程,每次创建和销毁进程都需要申请和释放资源,包括内存资源和硬盘资源,当进程创建和销毁的比较频繁时,时间和空间的开销都比较大,效率不够高。为了解决进程开销比较大的问题,产生了多线程编程。
2.进程与线程
在操作系统中,进程是通过进程控制块PCB(Process Control Block)进行描述,通过链表的方式将多个PCB组织起来,形成一个进程。线程也是通过PCB进行描述,但线程只有一个PCB。因此一个进程可以包含多个线程。
线程是系统调度执行的基本单位,每个线程都可以独立到CPU上执行。进程是系统资源分配的基本单位,进程创建时,系统会分配资源(内存,硬盘等),同时也会创建一个或者多个线程(至少创建一个),共用一份资源。
一旦进程创建,再创建第二个第三个线程时,就不需要额外申请资源,因此省去了分配资源的过程,线程销毁时,也省去了释放资源的过程。因此线程比进程更轻量。
3.总结(进程与线程的区别)
a.进程包含线程:一个进程可以有一个线程,也可以有多个线程,但不能没有线程;
b.进程是系统分配资源的基本单位,线程是系统调度执行的基本单位;
c.同一个进程的多个线程之间,公用一份资源(内存,硬盘等),编程时,多个线程共用一份变量;
d.线程是并发编程的主流方式,可以充分利用CPU的多个核心,当利用了CPU的全部核心后,再增加线程也无法再提高效率;
e.多个线程之间可能会互相影响,一个线程抛出异常之后,必须要处理,否则会影响其它线程;
f.多个进程之间具有隔离性,一个进程崩溃了,不会影响另外的进程;