前言
多執行緒是C#中一個重要的概念,多執行緒指的是在同一行程中同時執行多個執行緒的機制。多執行緒適用於需要提高系統並行性、吞吐量和響應速度的場景,可以充分利用多核處理器和系統資源,提高應用程式的效能和效率。
多執行緒常用場景
CPU 密集型任務.
I/O 密集型任務.
並行請求處理.
大數據處理等.
什麽是行程?
行程(Process)是電腦中的一個執行中的程式,它是對正在執行的程式的抽象。一個行程包括了程式的程式碼、數據、堆疊以及其他作業系統所需的資源。
什麽是執行緒?
執行緒(Thread)是行程中的一個執行單元,一個行程可以包含多個執行緒,它們共享行程的資源,但擁有獨立的執行流程。
使用 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#/.NET/.NET Core拾遺補漏】專欄我們將探討一些可能被忽略或遺漏的重要知識點、資訊或細節,以幫助大家更全面地了解這些技術棧的特性和發展方向。
GitHub開源地址
「
https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetStudy.md
拾遺補漏知識點投稿
該Issues主要是給各位小夥伴們提供投稿的地方,你有什麽想要學習的C#/.NET/.NET Core相關技術棧或者已學習過且有文章輸出的歡迎在投稿!
「
https://github.com/YSGStudyHards/DotNetGuide/issues/37