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