轴线定位桩:为什么要引入线程??

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/30 01:41:27
线程是什么?为什么要引入线程?进程与线程有什么区别?单、多线程有什么优缺点?
在系统仅有一个CPU的时,线程的并行是否就像进程的伪并行一向工作?那为何说线程缩短了运行时间?

我觉的是因为虽然进程可以提高CPU的利用率,但是进程之间的切换是非常耗费资源和时间的,为了能更进一步的提高
操作系统的并发进,引进了线程.这样,进程是分配资源的基本单位,而线程则是系统调度的基本单位.一个进程内部的线程可以共享该进程的所分配到的资源.线程的创建与撤消,线程之间的切换所占用的资源比进程要少很多.总的来说就是为了更进一步提高系统的并发性,提高CPU的利用率.

具体的太复杂,就不说了.只说说原因.
虽然只有一个CPU,电脑却不只做一种工作.好比只有一个车间,一次只能容一个工人工作.但你要完成的工作种类很多,所以就让不同的工人在不同的时间干不同的工作.一个工人就是一个线程.当然你可以只用一个工人完成所有的工作,这样还省去换班的时间,不过前提是你得能找到这样全能的工人.反正一个线程完不成所有的工作,通常Windows有数百个线程在运行.
这就是线程的本质,它是一个功能流程.
说线程缩短运行时间是不正确的.他的意思是提高工作效率.因为有线程切换,事实上是损失了一定的时间,只会增加.

要说线程,就必须先说说进程,进程就是程序的运行时的一个实例。线程呢可以看作单独地占有CPU时间来执行相应的代码的。对早期的计算机(如DOS)而言,线程既是进程,进程既是进程,因为她是单线程的。当然一个程序可以是多线程的,多线程的各个线程看上去像是并行地独自完成各自的工作,就像一台一台计算机上运行着多个处理机一样。在多处理机计算机上实现多线程时,它们确实可以并行工作,而且采用适当的分时策略可以大大提高程序运行的效率。但是二者还是有较大的不同的,线程是共享地址空间的,也就是说多线程可以同时读取相同的地址空间,并且利用这个空间进行交换数据。

学过《计算机体系结构》的人都知道。将顺序执行程序和采用多线程并行执行程序相比,效率是可以大大地提高的。比如,有五个线程thread1, thread2, thread3, thread4, thread5,所耗的CPU时间分别为4,5,1,2,7。(假设CPU轮换周期为4个CPU时间,而且线程之间是彼此独立的)顺序执行需要花费19个CPU时间,而并行需要的时间肯定少于19个CPU时间,至于具体多少时间要看那些线程是可以同时执行的。这是在非常小规模的情况下,要是面对大规模的进程之间的交互的话,效率可以表现得更高。