C#實現(xiàn)多線程的幾種方式小結
前言
多線程是C#中一個重要的概念,多線程指的是在同一進程中同時運行多個線程的機制。多線程適用于需要提高系統(tǒng)并發(fā)性、吞吐量和響應速度的場景,可以充分利用多核處理器和系統(tǒng)資源,提高應用程序的性能和效率。
多線程常用場景
- CPU 密集型任務.
- I/O 密集型任務.
- 并發(fā)請求處理.
- 大數(shù)據(jù)處理等.
什么是進程?
進程(Process)是計算機中的一個執(zhí)行中的程序,它是對正在運行的程序的抽象。一個進程包括了程序的代碼、數(shù)據(jù)、堆棧以及其他操作系統(tǒng)所需的資源。
什么是線程?
線程(Thread)是進程中的一個執(zhí)行單元,一個進程可以包含多個線程,它們共享進程的資源,但擁有獨立的執(zhí)行流程。
使用 Thread 類
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); } }
使用 ThreadPool 類
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); } }
使用 Task 類
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); } }
使用 Parallel 類
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); } }
到此這篇關于C#實現(xiàn)多線程的幾種方式小結的文章就介紹到這了,更多相關C#實現(xiàn)多線程內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
C# 動態(tài)輸出Dos命令執(zhí)行結果的實例(附源碼)
這篇文章主要介紹了C# 動態(tài)輸出Dos命令執(zhí)行結果的實例,文中講解非常細致,代碼幫助大家更好的理解和學習,感興趣的朋友可以了解下2020-07-07C# 實現(xiàn)Table的Merge,Copy和Clone
這篇文章主要介紹了C# 實現(xiàn)Table的Merge,Copy和Clone,幫助大家更好的利用c#處理文件,感興趣的朋友可以了解下2020-12-12C# 中 Array和 ArrayList詳解及區(qū)別
這篇文章主要介紹了C# 中 Array和 ArrayList詳解及區(qū)別的相關資料,需要的朋友可以參考下2017-01-01