C#實(shí)現(xiàn)多線程的幾種方式小結(jié)
前言
多線程是C#中一個(gè)重要的概念,多線程指的是在同一進(jìn)程中同時(shí)運(yùn)行多個(gè)線程的機(jī)制。多線程適用于需要提高系統(tǒng)并發(fā)性、吞吐量和響應(yīng)速度的場(chǎng)景,可以充分利用多核處理器和系統(tǒng)資源,提高應(yīng)用程序的性能和效率。
多線程常用場(chǎng)景
- CPU 密集型任務(wù).
- I/O 密集型任務(wù).
- 并發(fā)請(qǐng)求處理.
- 大數(shù)據(jù)處理等.
什么是進(jìn)程?
進(jìn)程(Process)是計(jì)算機(jī)中的一個(gè)執(zhí)行中的程序,它是對(duì)正在運(yùn)行的程序的抽象。一個(gè)進(jìn)程包括了程序的代碼、數(shù)據(jù)、堆棧以及其他操作系統(tǒng)所需的資源。
什么是線程?
線程(Thread)是進(jìn)程中的一個(gè)執(zhí)行單元,一個(gè)進(jìn)程可以包含多個(gè)線程,它們共享進(jìn)程的資源,但擁有獨(dú)立的執(zhí)行流程。
使用 Thread 類
public static void ThreadMethod() { var newThread = new Thread(WorkerMethod); newThread.Start(); for (int i = 0; i < 8; i++) { Console.WriteLine($"ThreadMethod 主線程開(kāi)始工作:{i}"); Thread.Sleep(100); } } private static void WorkerMethod() { for (int i = 0; i < 8; i++) { Console.WriteLine($"WorkerMethod 輔助線程開(kāi)始工作:{i}"); Thread.Sleep(100); } }
使用 ThreadPool 類
public static void ThreadPoolMethod() { ThreadPool.QueueUserWorkItem(o => WorkerMethod()); for (int i = 0; i < 8; i++) { Console.WriteLine($"ThreadPoolMethod 主線程開(kāi)始工作:{i}"); Thread.Sleep(100); } } private static void WorkerMethod() { for (int i = 0; i < 8; i++) { Console.WriteLine($"WorkerMethod 輔助線程開(kāi)始工作:{i}"); Thread.Sleep(100); } }
使用 Task 類
public static void TaskMethod() { Task.Run(() => WorkerMethod()); for (int i = 0; i < 8; i++) { Console.WriteLine($"TaskMethod 主線程開(kāi)始工作:{i}"); Task.Delay(100).Wait(); } } private static void WorkerMethod() { for (int i = 0; i < 8; i++) { Console.WriteLine($"WorkerMethod 輔助線程開(kāi)始工作:{i}"); Thread.Sleep(100); } }
使用 Parallel 類
public static void ParallelMethod() { Parallel.Invoke(WorkerMethod, WorkerMethodOther1, WorkerMethodOther2); } private static void WorkerMethod() { for (int i = 0; i < 8; i++) { Console.WriteLine($"WorkerMethod 輔助線程開(kāi)始工作:{i}"); Thread.Sleep(100); } } private static void WorkerMethodOther1() { for (int i = 0; i < 8; i++) { Console.WriteLine($"WorkerMethodOther1 輔助線程開(kāi)始工作:{i}"); Thread.Sleep(100); } } private static void WorkerMethodOther2() { for (int i = 0; i < 8; i++) { Console.WriteLine($"WorkerMethodOther2 輔助線程開(kāi)始工作:{i}"); Thread.Sleep(100); } }
到此這篇關(guān)于C#實(shí)現(xiàn)多線程的幾種方式小結(jié)的文章就介紹到這了,更多相關(guān)C#實(shí)現(xiàn)多線程內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#創(chuàng)建WCF服務(wù)控制臺(tái)應(yīng)用程序詳解
這篇文章主要為大家詳細(xì)介紹了C#創(chuàng)建WCF服務(wù)控制臺(tái)應(yīng)用程序,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07WPF+SkiaSharp實(shí)現(xiàn)自繪拖曳小球
WPF的拖曳效果,基本配置一下,就可以了,但是自繪的話,就得自己控制。本文將利用WPF+SkiaSharp實(shí)現(xiàn)自繪拖曳小球,感興趣的可以動(dòng)手嘗試一下2022-07-07C# 動(dòng)態(tài)輸出Dos命令執(zhí)行結(jié)果的實(shí)例(附源碼)
這篇文章主要介紹了C# 動(dòng)態(tài)輸出Dos命令執(zhí)行結(jié)果的實(shí)例,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-07-07【C#基礎(chǔ)】Substring截取字符串的方法小結(jié)(推薦)
這篇文章主要介紹了Substring截取字符串方法小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05C#實(shí)現(xiàn)基于Base64的加密解密類實(shí)例
這篇文章主要介紹了C#實(shí)現(xiàn)基于Base64的加密解密類,實(shí)例分析了C#基于Base64的加密解密實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03C# 實(shí)現(xiàn)Table的Merge,Copy和Clone
這篇文章主要介紹了C# 實(shí)現(xiàn)Table的Merge,Copy和Clone,幫助大家更好的利用c#處理文件,感興趣的朋友可以了解下2020-12-12C# 中 Array和 ArrayList詳解及區(qū)別
這篇文章主要介紹了C# 中 Array和 ArrayList詳解及區(qū)別的相關(guān)資料,需要的朋友可以參考下2017-01-01