写点什么

C#实现多线程的几种方式

作者:EquatorCoco
  • 2024-05-11
    福建
  • 本文字数:1753 字

    阅读完需:约 6 分钟

前言


多线程是 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 拾遗补漏》专栏我们将探讨一些可能被忽略或遗漏的重要知识点、信息或细节,以帮助大家更全面地了解这些技术栈的特性和发展方向。


文章转载自:追逐时光者

原文链接:https://www.cnblogs.com/Can-daydayup/p/18185545

体验地址:http://www.jnpfsoft.com/?from=infoq

用户头像

EquatorCoco

关注

还未添加个人签名 2023-06-19 加入

还未添加个人简介

评论

发布
暂无评论
C#实现多线程的几种方式_Java_EquatorCoco_InfoQ写作社区