c#之task與thread區別及其使用


1.什么是thread

  • 當我們提及多線程的時候會想到thread和threadpool,這都是異步操作,threadpool其實就是thread的集合,具有很多優勢,可以減少頻繁創建線程增加內存的開銷。
  • 不過在任務多的時候全局隊列會存在競爭而消耗資源。thread默認為前台線程,主程序必須等線程跑完才會關閉,而threadpool相反。
  • 總結:threadpool確實比thread性能優,但是兩者都沒有很好的api區控制,如果線程執行無響應就只能等待結束,從而誕生了task任務。

2.什么是task

  •  task簡單地看就是任務,那和thread有什么區別呢?Task的背后的實現也是使用了線程池線程,但它的性能優於ThreadPoll,因為它使用的不是線程池的全局隊列,而是使用的本地隊列,使線程之間的資源競爭減少。同時Task提供了豐富的API來管理線程、控制。但是相對前面的兩種耗內存,Task依賴於CPU對於多核的CPU性能遠超前兩者,單核的CPU三者的性能沒什么差別。

3.創建一個task任務有兩種模式:

1.使用factory創建會直接執行,使用new創建不會執行,必須等到start啟動之后才執行。

 public void test()
        {
            var testTask = new Task(() =>
            {
                Console.WriteLine("task start");
            });
            testTask.Start();
            var factoryTeak = Task.Factory.StartNew(() =>
            {
                Console.WriteLine("factory task start");
            });
        }

 

 

原文鏈接:https://blog.csdn.net/qq_40677590/article/details/102797838

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM