自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

C#實(shí)現(xiàn)多線程的幾種方式,你知道幾種?

開發(fā) 前端
進(jìn)程(Process)是計(jì)算機(jī)中的一個執(zhí)行中的程序,它是對正在運(yùn)行的程序的抽象。一個進(jìn)程包括了程序的代碼、數(shù)據(jù)、堆棧以及其他操作系統(tǒng)所需的資源。

前言

多線程是C#中一個重要的概念,多線程指的是在同一進(jìn)程中同時(shí)運(yùn)行多個線程的機(jī)制。多線程適用于需要提高系統(tǒng)并發(fā)性、吞吐量和響應(yīng)速度的場景,可以充分利用多核處理器和系統(tǒng)資源,提高應(yīng)用程序的性能和效率。

多線程常用場景

  • CPU 密集型任務(wù).
  • I/O 密集型任務(wù).
  • 并發(fā)請求處理.
  • 大數(shù)據(jù)處理等.

什么是進(jìn)程?

進(jìn)程(Process)是計(jì)算機(jī)中的一個執(zhí)行中的程序,它是對正在運(yùn)行的程序的抽象。一個進(jìn)程包括了程序的代碼、數(shù)據(jù)、堆棧以及其他操作系統(tǒng)所需的資源。

圖片圖片

什么是線程?

線程(Thread)是進(jìn)程中的一個執(zhí)行單元,一個進(jìn)程可以包含多個線程,它們共享進(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 主線程開始工作:{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);
            }
        }

圖片圖片

GitHub開源地址

https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetStudy.md

責(zé)任編輯:武曉燕 來源: 追逐時(shí)光者
相關(guān)推薦

2024-11-15 11:00:00

C#多線程

2021-05-07 16:19:36

異步編程Java線程

2024-11-04 09:39:08

Java?接口Thread?類

2024-04-24 11:24:43

C#數(shù)據(jù)去重

2024-02-05 12:08:07

線程方式管理

2025-01-21 10:04:40

Java并發(fā)阻塞隊(duì)列

2024-04-01 11:30:57

C#拷貝

2024-11-01 10:48:01

C#WPF程序

2022-05-27 06:57:50

Python循環(huán)方式生成器

2025-03-31 07:53:10

單例模式設(shè)計(jì)模式C#

2018-02-08 09:04:58

Nginx404頁面方法

2021-08-05 07:28:25

Java實(shí)現(xiàn)方式

2010-08-31 09:46:23

C#

2024-09-20 08:04:54

2023-12-27 12:12:35

NumPy函數(shù)數(shù)組

2019-07-23 17:52:59

Spring BootJava開發(fā)

2019-07-23 15:56:56

Spring Boot部署servlet

2023-10-30 11:53:37

繼承JS父類

2021-07-09 07:00:27

SpringbootServlet容器

2024-02-26 08:04:38

ReactReact.js場景
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號