Thread 和 ThreadPool 简单梳理(C#)【并发编程系列】

本文介绍了 C# 中的 Thread 和 ThreadPool 的基本概念及用法,通过示例展示了如何创建和控制线程,以及线程池的效率优势。Thread 类用于创建和管理线程,而 ThreadPool 则通过重用线程以减少资源消耗,提高响应速度。文章还探讨了两者的性能比较,实验表明 ThreadPool 在处理大量任务时表现更优。
摘要由CSDN通过智能技术生成

〇、前言

对于 Thread 和 ThreadPool 已经是元老级别的类了。Thread 是 C# 语言对线程对象的封装,它从 .NET 1.0 版本就有了,然后 ThreadPool 是 .Net Framework 2.0 版本中出现的,都是相当成熟的存在。

当然,现在已经出现了 Task 和 PLinq 等更高效率的并发类,线程和线程池在实际开发中逐渐减少了,但是不能不知道他们的用法,因为总有需要对接的内容,别人用了你也得能看懂。

本文将结合示例,简单介绍下 Thread 和 ThreadPool。

回到顶部

一、Thread 类

Thread 类的功能就是,创建和控制线程,设置其优先级并获取其状态。

 下边代码简单示例说明下 Thread 的相关内容:

 
public static void Main()
{
// (1)
//var th1 = new Thread(ExecuteInForeground);
//th1.Start();
// (2)
//var th2 = new Thread(ExecuteInForeground);
//th2.IsBackground = true;
//th2.Start();
// (3)
//ThreadPool.QueueUserWorkItem(ExecuteInForeground);
Thread.Sleep(1000);
// Console.WriteLine($"主线程 ({Thread.CurrentThread.ManagedThreadId}) 即将退出 执行 Join() 方法。。。");
// th2.Join();
Console.WriteLine($"主线程 ({Thread.CurrentThread.ManagedThreadId}) 即将退出。。。");
//Console.ReadLine();
}
private static void ExecuteInForeground(object state)
{
var sw = Stopwatch.StartNew();
Console.WriteLine("线程 {0}: {1}, 优先级: {2}",
Thread.CurrentThread.ManagedThreadId,
Thread.CurrentThread.ThreadState,
Thread.CurrentThread.Priority);
do
{
Console.WriteLine("线程 {0}: 计时 {1:N2} 秒",
C# 是一种广泛应用于Windows平台的面向对象编程语言,其并发编程和并行编程是设计高性能和可扩展应用程序的关键特性。以下是C#中并发和并行编程的一些核心概念: 1. **并发(Concurrent Programming)**:在单个处理器上同时执行多个任务或线程,这些任务可以在不同的时间点或以不同的频率交替执行。C# 提供了Thread类和Task类来进行并发操作,通过异步编程模型(async/await)可以更优雅地管理线程。 2. **线程(Threads)**:在C#中,线程是执行代码的基本单位。使用System.Threading命名空间中的Thread类可以创建和管理线程,包括启动、同步、中断等。 3. **Task Parallel Library (TPL)**:这是C#的一个库,提供了更高级别的并行编程支持,比如Task类,它可以更容易地进行并行任务分派,提供异步阻塞和非阻塞模式,以及自动的线程池管理。 4. **线程池(Thread Pool)**:线程池是预先创建的一组线程,用于处理短时间的、可复用的、并发任务。C#的线程池由ThreadPool类管理,可以提高资源利用率并避免频繁创建和销毁线程的开销。 5. **并发安全(Concurrency Safety)**:C#提供了锁(lock)、Monitor、Interlocked等同步机制来确保并发环境下的数据一致性。此外,还推荐使用async/await和Concurrent Collections(如ConcurrentDictionary)等特性避免竞态条件。 6. **并行计算(Parallel Computation)**:C#的并行计算涉及大规模数据集的分解和并行处理,可以利用多核处理器的性能。Parallel LINQ(PLINQ)是一个简化并行查询和迭代的方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值