关于进程和线程

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

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

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

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

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

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

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

有关详细信息,请参阅以下主题: