深入理解 .NET 平台下的进程与线程管理
1. 线程的角色
在 Windows 系统中,每个进程都包含一个初始的“线程”,它作为应用程序的入口点。正式来说,由进程入口点创建的第一个线程被称为主线程。任何 .NET 可执行程序(如控制台应用程序、Windows 窗体应用程序、WPF 应用程序等)都通过 Main() 方法标记其入口点,当调用该方法时,主线程会自动创建。
单线程执行的进程本质上是线程安全的,因为在给定时间内只有一个线程可以访问应用程序中的数据。然而,单线程进程(尤其是基于 GUI 的进程)在执行复杂操作时,如打印长文本文件、进行数学密集型计算或尝试连接数千英里外的远程服务器,往往会对用户显得有些无响应。
为了克服单线程应用程序的这一潜在缺点,Windows API 和 .NET 平台允许主线程使用诸如 CreateThread() 等 Windows API 函数生成额外的辅助线程(也称为工作线程)。每个线程(主线程或辅助线程)都成为进程中的一个独特执行路径,并可以并发访问进程内的所有共享数据点。
开发者通常会创建额外的线程来提高程序的整体响应能力。多线程进程给人一种众多活动几乎同时发生的错觉。例如,应用程序可以生成一个工作线程来执行一项繁重的工作,如打印大文本文件。当这个辅助线程在忙碌时,主线程仍然可以响应用户输入,从而使整个进程有可能提供更高的性能。然而,在单个进程中使用过多的线程实际上可能会降低性能,因为 CPU 必须在进程中的活动线程之间进行切换,这需要时间。
在一些机器上,多线程通常是操作系统提供的一种错觉。单 CPU(非超线程)机器实际上无法同时处理多个线
超级会员免费看
订阅专栏 解锁全文
2134

被折叠的 条评论
为什么被折叠?



