前言
多线程是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相关技术栈或者已学习过且有文章输出的欢迎在投稿!
dotnetguide技术社区交流群
- dotnetguide技术社区是一个面向.net开发者的开源技术社区,旨在为开发者们提供全面的c#/.net/.net core相关学习资料、技术分享和咨询、项目框架推荐、求职和招聘资讯、以及解决问题的平台。
- 在dotnetguide技术社区中,开发者们可以分享自己的技术文章、项目经验、学习心得、遇到的疑难技术问题以及解决方案,并且还有机会结识志同道合的开发者。
- 我们致力于构建一个积极向上、和谐友善的.net技术交流平台。无论您是初学者还是有丰富经验的开发者,我们都希望能为您提供更多的价值和成长机会。
到此这篇关于c#实现多线程的几种方式的文章就介绍到这了,更多相关c#多线程内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论