线程和任务体系结构
线程是操作系统功能,允许将应用程序逻辑分到几个并发的执行路径中。当复杂应用程序包含可同时执行的多个任务时,此功能非常有用。
操作系统执行应用程序实例时,它将创建一个单元(称为进程)来管理该实例。此进程包含一个执行线程。它是由应用程序代码执行的一系列编程指令。例如,如果一个简单应用程序具有一组可串行执行的指令,则整个应用程序只有一个执行路径或线程。更复杂的应用程序可能有几个任务,这些任务可以一前一后地执行,而不是串行执行。通过为每个任务启动独立的进程,应用程序可以实现串行操作。但是,启动进程会消耗大量资源。而应用程序可启动独立的线程。相对来说,这将消耗较少的资源。而且,可以独立于与某进程关联的其他线程来安排每个线程的执行。
线程使复杂的应用程序能够更有效地利用 CPU,即使在只有一个 CPU 的计算机上也是如此。如果只有一个 CPU,则每次只能执行一个线程。如果一个线程执行不使用 CPU 的长时间运行的操作(如磁盘读/写操作),则第一个操作完成之前可以执行另一个线程。通过在其他线程等待操作完成的同时执行线程,应用程序可以最大限度地利用 CPU。对于大量占用磁盘 I/O 的多用户应用程序(如数据库服务器),这尤其有效。具有多个微处理器 (CPU) 的计算机可以同时在每个 CPU 上执行一个线程。例如,如果某计算机有八个 CPU,则它可以同时执行八个线程。