关于进程和线程

每个 进程 都提供执行程序所需的资源。 进程具有虚拟地址空间、可执行代码、打开系统对象的句柄、安全上下文、唯一进程标识符、环境变量、优先级类、最小和最大工作集大小以及至少一个执行线程。 每个进程都以单个线程启动,通常称为 主线程,但可以从任何线程创建其他线程。

线程是可以计划执行的进程内的实体。 进程的所有线程共享其虚拟地址空间和系统资源。 此外,每个线程都维护异常处理程序、计划优先级、线程本地存储、唯一线程标识符和系统用于保存线程上下文的一组结构,直到计划线程。 线程上下文包括线程的计算机寄存器集、内核堆栈、线程环境块和线程进程地址空间中的用户堆栈。 线程也可以有自己的安全上下文,可用于模拟客户端。

Microsoft Windows支持先发制人的多任务处理,从而产生从多个进程同时执行多个线程的效果。 在多处理器计算机上,系统可以同时执行计算机上存在处理器的线程数。

作业对象允许将进程组作为一个单元进行管理。 作业对象是可支配、安全、可共享的对象,用于控制与其关联的进程的属性。 对作业对象执行的操作会影响与作业对象关联的所有进程。

应用程序可以使用 线程池 来减少应用程序线程数,并提供工作线程的管理。 应用程序可以对工作项进行排队、将工作与可等待句柄相关联、基于计时器自动排队以及与 I/O 绑定。

用户模式计划 (UMS) 是一种轻型机制,应用程序可用于计划自己的线程。 应用程序可以在用户模式下的 UMS 线程之间切换,而无需涉及 系统计划程序 ,并在内核中的 UMS 线程阻止时重新获得对处理器的控制。 每个 UMS 线程都有自己的线程上下文,而不是共享单个线程的线程上下文。 在用户模式下在线程之间切换的功能使 UMS 比需要少量系统调用的短期工作项的线程池更高效。

光纤是应用程序必须手动计划的执行单元。 光纤在计划它们的线程上下文中运行。 每个线程可以计划多个光纤。 通常,光纤在设计良好的多线程应用程序上不提供优势。 但是,使用光纤可以更轻松地移植旨在计划其自己的线程的应用程序。

有关详情,请参阅以下主题: