1、什么是线程?
我们可以把线程理解为“轻量级进程”,它是一个基本的CPU执行单元,也是程序执行流的最小单元,由线程ID、程序计数器、寄存器集合和堆栈组成。
线程是进程中的一个实体,是被系统独立调度和分派的基本单位,它不拥有系统资源,只拥有一点运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程的全部资源。
一个线程可以创建和撤销另一个线程,同一进程中的多个线程可以并发执行,由于线程之间的相互制约,致使线程中出现间断性。线程也有就绪、阻塞、运行三种基本。
2、线程与进程有什么区别
(1)调度
进程:传统操作系统中,拥有资源和独立调度的基本单位都是进程,每次调度都要进行上下文切换,开销较大。
(2)并发性
引入线程的操作系统中,不仅进程之间可以并发执行,而且一个进程中的多个线程之间亦可并发执行,甚至不同进程中的线程也能并发执行,从而使操作系统具有更好的并发性,提高了系统资源的利用率和系统吞吐量。
(3)拥有资源
进程:进程是系统中拥有资源的基本单位
线程:线程不拥有系统资源,但线程可以访问其隶属进程的系统资源,这主要表现在属于同一进程的所有线程都具有相同的地址空间。
(PS:如果线程是拥有资源的单位,那么切换线程就需要较大的时空开销,这样的话,线程这个概念的踢出就没有意义了。)
(4)独立性
进程:每个进程都拥有独立的地址空间和资源,除了共享全局变量,不允许其它进程访问。
线程:某进程中的线程对其他进程不可见,同一进程中的不同线程共享进程的地址空间和资源。
(5)系统开销
进程:在创建或撤销进程时,系统要为之分配或回收PCB及其它资源,操作系统为此所付出的开销,明显大于创建或撤销线程时的开销
线程:线程切换时只需保存和设置少量寄存器内容,开销很小;由于同一进程内的多个线程共享进程的地址空间,因此这些线程之间的同步和通信非常容易实现,甚至无需操作系统的干预。
(6)支持多处理机系统
单线程进程:不管有多少处理机,进程只能运行在一个处理机。
多线程进程:可以将进程中的多个线程分配到多个处理机上执行。