C#初学课堂:线程的概念
来源:岁月联盟
时间:2009-01-12
现在我们考虑这样一个例子,一个网页里有一段Flash动画,还有一个等待用户输入的文本框。程序必须在播放动画的同时不停的检测有无用户输入,以便及时响应用户的操作。在最早期的操作系统中,我们需要编写一段非常复杂的代码来实现这一目标,现在由于有了多线程技术(Multi-threading),这类问题就变得很简单了,我们可以通过在一个进程中创建两个线程(Threading)来实现我们的目标。线程非常类似于进程,它相当于在一个进程中创建了若干条并行的路线,比如一个线程播放动画,一个线程检测用户输入,操作系统将自动以“时间片轮转”的方式交替执行这两个线程中的指令,这样我们的目标就实现了。
同一个进程中的所有线程共享进程的资源,所以它们之间的切换就比进程间的切换快的多,因此线程可以看作轻量级进程(Lightweight Process)。现代的操作系统都是多进程(Multi-process)的操作系统,每个进程中运行一个或多个线程,所以大多数时间操作系统中都有多个线程并发运行。操作系统中有专门的调度程序管理线程,它根据事先设计好的算法轮流执行每个线程。线程是操作系统进行CPU调度的基本单位,线程的调度是由操作系统自动完成的,无须程序员关心。程序员只需编写好线程即可,线程的轮转交由操作系统完成,因此实现起来非常简单。
近年来Intel和AMD等芯片厂商纷纷发布了多核心CPU,使得线程能够真正的实现同步执行,多线程技术从此翻开新的篇章。