电脑工业界每有新的技术问世,人们总是不遗余力地去担忧“它是不是够 重要”。公司行号虎视眈眈地注意其竞争对手,直到对方采用并宣扬这技术有 多么重要,才开始急急赶上。不论这技术是不是真的很重要,每一个人都想尽 办法让最终用户感觉“真的很重要”。好啦,于是最终用户真的觉得需要它 了——即使他们完全不了解那是什么东西。
“线程”程序设计正处在这个循环的起点。虽然线程在各式各样的操作系 统上已经存在了不只十年,但它毕竟还是藉着无孔不入的 Windows 95 和 Windows NT,才能够打进家庭软件和商务应用软件中。
不久的将来,多线程多任务软件将广泛地蔓延开来。线程将成为每一个软 件开发者必须使用的标准程序工具。并不是每一个程序都必须使用线程,然而 多线程多任务——一如多媒体软件或Internet软件所支持的——将使程序的效率得以高度发挥。线程可以改善用户对于软件操作的感受,简化程序的开发, 在同一时间的一台服务器上提供对成百上千用户的支持。用户通常只知晓其结 果,他们不知道背后是什么力量促成了这伟大的改良。
单线程程序就像超级市场中唯一的一位出纳员。这个出纳员对于小量采购 可以快速结账,但如果有人采买了一大车货品,结账就需要点时间了,其他每 一个人都必须等待。
多线程程序像是有一群出纳员,每人负责一条线。某些线专门用来为大买 家服务,其他线处理小市民的采买。一条线瘫痪了,并不会影响其他线。
根据这样的宏观印象,下面是一个简单的定义:
多线程,使程序得以将其工作分开,独立运作,不互相影响。
线程并不总是被要求达到这样的目标,不过它们的确使这个目标更容易达 成。为了了解线程在什么地方进入程序设计的大版图中,我们最好稍稍知道, 自从 MS-DOS 问世到现在,程序员的需求有了些什么样的改变。
过去 15 年来,在微软操作系统上工作的程序开发者,花费在程序与程序 的合作上的精力愈来愈少。由于用户的需要以及程序体积的增长,操作系统必 须负担愈来愈多的任务在“多任务”上头,并且让一切顺利。