关于进程和线程

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

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

Microsoft Windows 支持 抢占式多任务处理,这会产生同时执行多个进程中多个线程的效果。 在多处理器计算机上,系统可以同时执行与计算机上存在处理器一样多的线程。

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

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

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

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

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