前言
多線程是C#中一個重要的概念,多線程指的是在同一進(jìn)程中同時運(yùn)行多個線程的機(jī)制。多線程適用于需要提高系統(tǒng)并發(fā)性、吞吐量和響應(yīng)速度的場景,可以充分利用多核處理器和系統(tǒng)資源,提高應(yīng)用程序的性能和效率。
多線程常用場景
什么是進(jìn)程?
進(jìn)程(Process)是計算機(jī)中的一個執(zhí)行中的程序,它是對正在運(yùn)行的程序的抽象。一個進(jìn)程包括了程序的代碼、數(shù)據(jù)、堆棧以及其他操作系統(tǒng)所需的資源。
什么是線程?
線程(Thread)是進(jìn)程中的一個執(zhí)行單元,一個進(jìn)程可以包含多個線程,它們共享進(jìn)程的資源,但擁有獨立的執(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);
}
}
該文章在 2024/6/8 18:36:37 編輯過