使用线程处理(C# 编程指南) - C# 编程指南

返回介绍

使用线程处理(C# 编程指南)

发布于 2019-11-12 字数1981 浏览 806 评论 0

默认情况下,C# 程序具有一个线程。此线程执行程序中以 Main 方法开始和结束的代码。Main 直接或间接执行的每一个命令都由默认线程(或主线程)执行,当 Main 返回时此线程也将终止。不过,可以创建辅助线程,以便与主线程一起并行执行代码。这些线程通常称为“辅助线程”。

辅助线程可以用于执行耗时较多的任务或时间要求紧迫的任务,而不必占用主线程。例如,辅助线程经常用在服务器应用程序中,以便无需等待前面的请求完成即可响应传入的请求。辅助线程还可用于在桌面应用程序中执行“后台”任务,以便使主线程(用于驱动用户界面元素)保持对用户操作的响应。

多线程处理解决了吞吐量和响应性的问题,但同时也带来了资源共享问题,如死锁和争用状态。多线程特别适用于需要不同资源(如文件句柄和网络连接)的任务。为单个资源分配多个线程可能会导致同步问题,线程会被频繁阻止以等待其他线程,从而与使用多线程的初衷背道而驰。

常见的策略是使用辅助线程执行不需要大量占用其他线程所使用的资源的、耗时较多的任务或时间要求紧迫的任务。实际上,程序中的某些资源必须由多个线程访问。考虑到这些情况,System.Threading 命名空间提供了用于同步线程的类。这些类包括 Mutex、Monitor、Interlocked、AutoResetEvent 和 ManualResetEvent。

您可以使用这些类中的部分或所有类来同步多个线程的活动,但是某些多线程处理支持由 C# 语言提供。例如,C# 中的 Lock 语句通过隐式使用 Monitor 来提供同步功能。

下面的主题演示了常用的多线程处理技术:

  • 如何:创建和终止线程(C# 编程指南)

  • 如何:对制造者线程和使用者线程进行同步(C# 编程指南)

  • 如何:使用线程池(C# 编程指南)

相关章节

有关更多信息,请参见:

  • 如何:使用 Visual C# .NET 创建线程

  • 如何:使用 Visual C# .NET 向线程池提交工作项

  • 如何:通过使用 Visual C# .NET 在多线程处理环境中同步对共享资源的访问

  • 线程与线程处理

  • 为多线程处理同步数据

请参见

任务

监视器同步技术示例等待同步技术示例“线程”示例

概念

C# 编程指南监视器互锁操作AutoResetEvent

参考

ThreadMutex

其他资源

托管线程处理使用线程和线程处理线程示例

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

目前还没有任何评论,快来抢沙发吧!