精:.NET多线程发展历程简介

     多线程无论是哪种支持多线程的高级语言都是重中之重,从某种意义上讲,多线程可以提供应用程序的运行效率,尤其是多CPU时代。在.NET1.0就出现了多线程Thread,再到.NET4.5的语法糖await async,每次多线程的新功能都是对上一版本多线程功能的提升和改进(并不是替代),让多线程越来越容易上手,效率也越来越高。多线程也是面试常考的话题之一,几个版本的多线程都会考到。本文将简介.NET多线程的发展历程,以及它们的优缺点。下图为发展历程。

d9896089a14cd3312fd534b04db0f0a8.png

.NET多线程发展历程

1、Thread

   Thread是.NET Frameworkd 1.0版本就有的功能,命名空间:System.Threading。

优点:提供了丰富的多线程操作API

缺点:线程个数的使用不能限制,同时创建多个容易死机,以及无法复用线程等。

使用案例:

class Program
    {
        static void Main(string[] args)
        {
            //创建一个实例执行
            ThreadTest test=new ThreadTest();
            //调用test实例的MyThread方法
            Thread thread = new Thread(new ThreadStart(test.MyThread));
            //启动线程
            thread.Start();
            Console.Read();
        }
    }


    class ThreadTest
    {
        public void MyThread()
        {
            Console.WriteLine("这是一个方法实例");
        }
    }

2、ThreadPool

    ThreadPool线池是.NET Frameworkd 2.0推出的新特性,它的出现从某种意义上来将改进了Thread的缺点。

优点:解决了线程个数的限制以及线程的复用,避免重复申请和释放

缺点:在线程顺序控制方面不好用,API较少而且线程等待问题解决起来较为麻烦。

使用案例:

static void DoSomething(object value)
{
    Console.WriteLine(value);
}
//调用简写
ThreadPool.QueueUserWorkItem(e =>
{
    DoSomething(e);
}, "pram1");

可以设置线程数量最大值,但必须大于其CPU核数,否则无效。

3、Task
    Task是.NET Frameworkd 3.0推出的新特性,被称为线程最佳实践,API也最多,Task的背后的实现也是使用了线程池线程。

优点:丰富的API,以及多线程的管理方便

缺点:线程数量控制较为麻烦,这个在Parallel得到了改进,Parallel可以启动多线程。

使用案例:

var testTask = new Task(() =>
 {
        Console.WriteLine("task start");
 });//这种必须Start
  testTask.Start();
  var factoryTeak = Task.Factory.StartNew(() =>
   {
       Console.WriteLine("factory task start");
  });
  Task.Run(() => { Console.Write("aaaaa"); });


4. await async
    await async是.NET4.5的新特征,是C#的语法糖,在.NET Core以上版本发扬光大了,可以说无处不在。它让程序员使用后端异步更加方便快捷。这里就不列出优缺点了,反正它是最好用的,现在.NET6都在大量使用。

使用案例:

public ActionResult Index()
        {
            var t = Test();
            var i = t.Result;
            return View();
        }
        public async Task<int> Test()
        {
            return await Task.Run(() =>
            {
                var i = 0;
                i++;
                return i;
            });
        }

5、结语

    本文讲述了.NET多线程技术的发展历程以及它们各自的优缺点,并且列出了使用案例,仅供参考。希望本文对你有所帮助,欢迎大家留言讨论或者提出异议。

版权声明:本文来源于网友收集或网友提供,仅供学习交流之用,如果有侵权,请转告版主或者留言,本公众号立即删除。


技术群:添加小编微信并备注进群

小编微信:mm1552923   

公众号:dotNet编程大全    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值