线程处理(C# 和 Visual Basic)
线程处理使 Visual Basic 或 C# 程序能够执行并发处理,以便您可以同时执行多个操作。 例如,您可以使用线程处理来监视用户输入,执行后台任务,以及处理并发输入流。
线程具有以下特点:
线程使程序能够执行并发处理。
.NET Framework System.Threading 命名空间使线程更易于使用。
线程共享应用程序的资源。 有关更多信息,请参见使用线程和线程处理。
默认情况下,Visual Basic 或 C# 程序具有一个线程。 不过,可以创建辅助线程,以便与主线程一起并行执行代码。 这些线程通常称为“辅助线程”。
辅助线程可以用于执行耗时较多的任务或时间要求紧迫的任务,而不必占用主线程。 例如,辅助线程经常用在服务器应用程序中,以便无需等待前面的请求完成即可响应传入的请求。 辅助线程还可用于在桌面应用程序中执行“后台”任务,以便使主线程(用于驱动用户界面元素)保持对用户操作的响应。
线程处理解决了吞吐量和响应性的问题,但同时也带来了资源共享问题,例如死锁和争用状态。 多线程特别适用于需要不同资源(例如文件句柄和网络连接)的任务。 为单个资源分配多个线程可能会导致同步问题,线程会被频繁阻止以等待其他线程,从而与使用多线程的初衷背道而驰。
常见的策略是使用辅助线程执行不需要大量占用其他线程所使用的资源的、耗时较多的任务或时间要求紧迫的任务。 实际上,程序中的某些资源必须由多个线程访问。 考虑到这些情况,System.Threading 命名空间提供了用于同步线程的类。 这些类包括 Mutex、Monitor、Interlocked、AutoResetEvent 和 ManualResetEvent。
您可以使用这些类中的部分或所有类来同步多个线程的活动,但是某些多线程处理支持受 Visual Basic 和 C# 语言支持。 例如,Visual Basic 的 SyncLock 语句和 C# 的 Lock 语句通过隐式使用 Monitor 来提供同步功能。
提示
在 .NET Framework 4 版 中,通过 System.Threading.Tasks.Parallel 和 System.Threading.Tasks.Task 类、System.Collections.Concurrent 命名空间中新的并发集合类 并行 LINQ (PLINQ) 以及基于任务(而不是线程)概念的新编程模型,多线程编程得到了大大简化。 有关更多信息,请参见 .NET Framework 中的并行编程。
相关主题
标题 |
说明 |
---|---|
描述如何创建和使用线程。 |
|
描述如何用多线程应用程序传递和返回参数。 |
|
说明如何创建简单多线程应用程序。 |
|
描述如何控制线程的交互。 |
|
说明如何以固定的间隔在单独的线程上运行过程。 |
|
描述如何使用系统管理的辅助线程池。 |
|
演示线程池中多个线程的同步使用。 |
|
描述如何在 .NET Framework 中实现线程处理。 |
重要章节
C# 3.0 in a Nutshell, Third Edition: A Desktop Quick Reference中的Threading
C# 3.0 in a Nutshell, Third Edition: A Desktop Quick Reference中的Asynchronous Methods
C# 3.0 Cookbook, Third Edition: More than 250 solutions for C# 3.0 programmers中的Threading and Synchronization