当前位置: 首页 > news >正文

Thread线程基础使用

多线程目的:其实就是希望“并行”执行多任务,提升效率。

单核多线程基于时间片轮询 并发而非并行

线程最大数等于cpu核心数为佳

namespace thinger.ThreadDemo
{class Program{//主线程static void Main(string[] args){Console.WriteLine("这个是主线程执行的任务1!");//。。。。。。。Thread thread = new Thread(TStart); //基于委托传递具体方法//设为后台线程,前台线程执行完, 后台线程会被强制终止thread.IsBackground = true;thread.Start();Thread thread2 = new Thread(() =>{Thread.Sleep(2000);//模拟线程执行时间是2秒Console.WriteLine("这个是子线程2执行的内容!");});thread2.IsBackground = true;thread2.Start();Console.WriteLine("这个是主线程执行的任务2");Console.WriteLine("这个是主线程执行的任务3");Console.WriteLine("----------------------------");Console.ReadLine();}static void TStart(){Thread.Sleep(3000);//模拟线程执行时间是2秒Console.WriteLine("这个是子线程1执行的内容!");}}
}

同步执行

阻塞与串行:同步执行通常是阻塞且串行的。这意味着当一个任务开始时,调用它的线程会一直等待该任务完成,期间不会执行其他任务

异步执行

非阻塞与并发(或并行):异步执行是非阻塞的,允许并发或并行处理。在异步模型中,发起一个异步操作后,调用者可以立即继续执行其他代码,而不必等待该操作完成。

从主线程的角度来看,是否是异步取决于主线程的行为:

  • 如果主线程调用了 Thread.Start() 后立即继续执行其他代码而不等待新线程完成,那么这确实是异步执行。
  • 如果主线程调用了 Thread.Join() 等待新线程完成后再继续,那么从主线程的角度看,这是同步执行,因为主线程会阻塞直到新线程完成。
http://www.lryc.cn/news/504010.html

相关文章:

  • 【Linux】结构化命令
  • ElasticSearch01-概述
  • docker xxxx is using its referenced image ea06665f255d
  • Vue 2 中 v-text 和 v-html 指令的使用详解
  • 高级Python游戏开发:创建一款多人对战坦克大战
  • 数据结构_拓扑排序
  • Edge SCDN 边缘安全加速有什么用?
  • 被狗咬住怎么让它松口?
  • MySQL迁移SQLite 借助PYTHON脚本
  • Python什么是动态调用方法?What is Dynamic Method Invocation? (中英双语)
  • Cesium中实现仿ArcGIS三维的动态图层加载方式
  • 数据冒险、控制冒险、结构冒险
  • TCA9555芯片手册解读(6)
  • NodeJs-fs模块
  • Transformer: Attention Is All You Need (2017) 翻译
  • 【记录】Django解决与VUE跨域问题
  • Java 常见Exception异常解决方法
  • 东方通 TongWebV7 Docker 部署与 Spring Boot 集成指南
  • TIM输入捕获---STM
  • 【笔记】架构上篇Day6 法则四:为什么要顺应技术的生命周期?
  • MSF(Metasploit Framework)
  • Python中的OpenCV详解
  • IMX6ULL开发板学习嵌入式技术过程中为了测试本地网络是否正常而常用的Ping命令
  • Blue Ocean 在Jenkins上创建Pipeline使用详解
  • 2024 年最新前端ES-Module模块化、webpack打包工具详细教程(更新中)
  • photoshop的2个形状-箭头
  • 【经验分享】搭建本地训练环境知识点及方法
  • AI知识-多模态(Multimodal)
  • 代码随想录 leetcode-数据结构刷题笔记
  • Oracle最佳实践-优化硬解析