什么是线程?
线程就是并行地做事情,就像进程一样。那么线程与进程有什么不同呢?当您在电子表格上进行计算时,可能还会有一个媒体播放器在同一台式机上运行,播放您最喜欢的歌曲。下面是两个并行工作进程的例子:一个运行电子表格程序;一个经营媒体播放器。多任务处理是一个众所周知的术语。仔细观察媒体播放器就会发现,在一个单一的过程中,也有一些事情是并行发生的。当媒体播放器将音乐发送到音频驱动程序时,用户界面的所有铃声和哨子都在不断更新。这就是线程的作用所在,单个进程中的并发性。
那么并发性是如何实现的呢?在单核cpu上并行工作是一种错觉,有点类似于电影中移动图像的错觉。对于进程,这种错觉是通过在很短的时间后中断处理器在一个进程上的工作而产生的。然后处理器转到下一道工序。为了在进程之间切换,保存当前的程序计数器并加载下一个处理器的程序计数器。这是不够的,因为同样需要对寄存器、某些体系结构和操作系统特定的数据进行处理。
正如一个CPU可以驱动两个或多个进程一样,也可以让CPU运行在一个进程的两个不同代码段上。当一个进程启动时,它总是执行一个代码段,因此这个进程被称为有一个线程。然而,程序可能决定启动第二个线程。然后,在一个进程内同时处理两个不同的码序列。通过重复保存程序计数器和寄存器,然后加载下一个线程的程序计数器和寄存器,在单核cpu上实现并发。在活动线程之间循环不需要程序的合作。当切换到下一个线程时,一个线程可能处于任何状态。
当前CPU设计的趋势是多核并存。典型的单线程应用程序只能使用一个内核。然而,一个具有多个线程的程序可以被分配到多个核上,使事情以真正并发的方式发生。因此,将工作分配给多个线程可以使程序在多核cpu上运行得更快,因为可以使用额外的核。