进程与线程
线程是进程的实体,是CPU调度和分配的基本单位,线程自己基本上不拥有系统资源,只用有一点在运行中必不可少的资源(如程序计数器,寄存器和栈),但是它可与同属一个进程的其他线程共享进程所拥有的全部资源。一个线程可以创建和撤销另一个线程;同一进程中的多个线程之间可以并发执行。相对于进程而言,线程是一个更加接近于执行体的念,它可以与同进程中的其他线程共享数据,但拥有自己的栈空间,拥有独立的执行序列。在用户看来,多线程是同时执行的。但从操作系统来看,各个线程是交替执行的。系统不停的在各个线程之间切换,每个线程只有在系统分配给他的时间片内才能获得CPU的控制权,执行程序中的代码。
进程和线程的区别
(1)线程是进程的一部分,所以线程有时侯被称为轻量级进程
(2)一个没有线程的进程是可以被看作单线程的,如果一个进程内拥有多个线程,进程执行过程不是一条线,而是多条线共同完成的。
(3)系统在运行的时候会为每一个进程分配不同的内存区域,但是不会为线程分配内存(线程所使用的资源是它所属的进程资源),线程组只能共享资源。那就是说。除了CPU之
外(线程在运行的时候要占用CPU资源),计算机内部的软硬件资源的分配与线程无关,线程只能共享它所属进程的资源。
(4)与进程控制表PCB相似,线程已有自己的控制表TCB,但是TCB中所保存的线程状态比PCB表中少很多。
(5)进程是系统所有资源分配时候的一个基本单位,拥有一个完整的虚拟空间地址,并不依赖线程而独立存在。
如果在主线程中创建线程时,应该让主线程休眠,如果主线程不休眠,它就可能退出,这样在新线程有机会运行之前整个进程可能就已经终止了,所以应该保证在所有的线程运行结束之后,再主线程结束。这种行为特征依赖于操作系统的线程实现和调度算法。