C# 任务和线程的区别

任务即Task类,线程即Thread类。

使用任务执行并行和并发代码是微软强烈推荐的,因为任务比线程的抽象级别更高,而且任务是并行的。关于并发和并行的区别,这里就不做介绍了,网上有很多资料。

1、线程池

创建任务的基本原理是使用线程池,也就是说任务最终也是要交给线程去执行的。但是微软优化了任务的线程池,使线程的控制更加精准和高效。对于需要频繁创建线程的程序来说,使用线程池无疑是最好的选择。因为创建一个线程需要消耗大量的系统资源,而线程池很好的解决了这个问题。当你使用线程池创建10个线程时,系统可能只创建了3、4个线程,因为线程池中的线程是可以循环使用的。下面举个例子说明一下:

 这里使用task创建了10个任务,但是系统只创建了4个线程。创建的线程数是根据个人电脑配置不同而不同的。

 再看一下使用Thread类创建线程的情况:

 可以看到这里创建了10个线程,而且在时间上也比使用任务创建线程的时间要长。

这是任务和线程的区别之一,也是优势之一,下面介绍另一个区别

2、并行

我们知道现在的电脑CPU基本上都是多核的,并行就是很好的利用了多核,更加高效的利用了电脑的硬件资源。

当我们使用task类创建一个任务时,这个任务默认就是并行执行的。而使用Thread创建多个线程时,默认是并发执行的。

3、前台线程和后台线程

task默认是后台线程,而thread默认是前台线程。关于前台线程和后台线程的区别这里不做介绍。

当然我们也可以设置task为前台线程,Thread.CurrentThread.IsBackground,将IsBackground设置为false即可。

我们也可以使用同样的属性把thread设置成后台线程。

4、总结

任务是微软强烈推荐处理多线程的有效类库,请尽可能使用任务创建多线程。

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值