多線程是C#中一個(gè)重要的概念,多線程指的是在同一進(jìn)程中同時(shí)運(yùn)行多個(gè)線程的機(jī)制。多線程適用于需要提高系統(tǒng)并發(fā)性、吞吐量和響應(yīng)速度的場景,可以充分利用多核處理器和系統(tǒng)資源,提高應(yīng)用程序的性能和效率。
進(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í)行流程。
public static void ThreadMethod() { var newThread = new Thread(WorkerMethod); newThread.Start(); for (int i = 0; i < 8; i++) { Console.WriteLine($"ThreadMethod 主線程開始工作:{i}"); Thread.Sleep(100); } } private static void WorkerMethod() { for (int i = 0; i < 8; i++) { Console.WriteLine($"WorkerMethod 輔助線程開始工作:{i}"); Thread.Sleep(100); } }
圖片
public static void ThreadPoolMethod() { ThreadPool.QueueUserWorkItem(o => WorkerMethod()); for (int i = 0; i < 8; i++) { Console.WriteLine($"ThreadPoolMethod 主線程開始工作:{i}"); Thread.Sleep(100); } } private static void WorkerMethod() { for (int i = 0; i < 8; i++) { Console.WriteLine($"WorkerMethod 輔助線程開始工作:{i}"); Thread.Sleep(100); } }
圖片
public static void TaskMethod() { Task.Run(() => WorkerMethod()); for (int i = 0; i < 8; i++) { Console.WriteLine($"TaskMethod 主線程開始工作:{i}"); Task.Delay(100).Wait(); } } private static void WorkerMethod() { for (int i = 0; i < 8; i++) { Console.WriteLine($"WorkerMethod 輔助線程開始工作:{i}"); Thread.Sleep(100); } }
圖片
public static void ParallelMethod() { Parallel.Invoke(WorkerMethod, WorkerMethodOther1, WorkerMethodOther2); } private static void WorkerMethod() { for (int i = 0; i < 8; i++) { Console.WriteLine($"WorkerMethod 輔助線程開始工作:{i}"); Thread.Sleep(100); } } private static void WorkerMethodOther1() { for (int i = 0; i < 8; i++) { Console.WriteLine($"WorkerMethodOther1 輔助線程開始工作:{i}"); Thread.Sleep(100); } } private static void WorkerMethodOther2() { for (int i = 0; i < 8; i++) { Console.WriteLine($"WorkerMethodOther2 輔助線程開始工作:{i}"); Thread.Sleep(100); } }
圖片
https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetStudy.md
本文鏈接:http://www.www897cc.com/showinfo-26-87994-0.htmlC#實(shí)現(xiàn)多線程的幾種方式,你知道幾種?
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com