首先,我们需要多线程的主要原因是:在许多应用中会同时发生多种活动,某些活动会随着时间的推移被阻塞,通过将这些应用程序分解成可以准并行运行的多个顺序线程,程序设计模型会变得简单起来。
这里可以说加入了一个新的元素:并行实体共享同一个地址空间和所有可用数据的能力。对于某些应用而言,这种能力是必须的,而这正是多进程模型(它们具有不同的地址空间)无法表达的。
第二个需要多线程的理由是,由于线程比进程更轻量级,所以它们更容易(更快)创建和撤销。在一般情况下,创建一个线程比创建一个进程要快上10-100倍。在有大量线程需要动态和快速修改时,具有这一特性是非常重要的。
第三个需要多线程的理由是,关于性能方面的,若多个线程都是CPU密集型的,那么多线程并不能很明显的体现出它的性能的提升,但是在一些需要大量I/O处理和大量计算的情况下,拥有多线程允许这些活动彼此重叠进行,对程序性能的提升是非常明显的。
最后,在多CPU系统中,多线程是有益的,在这样的系统中,可以真正实现物理上的多线程并行运行。
线程概念试图实现的是:共享一组资源的多个线程的执行能力,以便这些线程可以为完成某项任务而共同工作。
进程用于将资源集中在一起,而线程则是在CPU上被调度的实体。