欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#實現(xiàn)多線程的幾種方式小結(jié)

 更新時間:2024年07月01日 10:29:12   作者:碼農(nóng)浩克  
多線程是C#中一個重要的概念,多線程指的是在同一進程中同時運行多個線程的機制,多線程適用于需要提高系統(tǒng)并發(fā)性、吞吐量和響應(yīng)速度的場景,可以充分利用多核處理器和系統(tǒng)資源,提高應(yīng)用程序的性能和效率,本文介紹了C#實現(xiàn)多線程的幾種方式,需要的朋友可以參考下

前言

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

多線程常用場景

  • CPU 密集型任務(wù).
  • I/O 密集型任務(wù).
  • 并發(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);
            }
        }

圖片

到此這篇關(guān)于C#實現(xiàn)多線程的幾種方式小結(jié)的文章就介紹到這了,更多相關(guān)C#實現(xiàn)多線程內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論