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()等待新线程完成后再继续,那么从主线程的角度看,这是同步执行,因为主线程会阻塞直到新线程完成。
相关文章:
Thread线程基础使用
多线程目的:其实就是希望“并行”执行多任务,提升效率。 单核多线程基于时间片轮询 并发而非并行 线程最大数等于cpu核心数为佳 namespace thinger.ThreadDemo {class Program{//主线程static void Main(string[] args){Console.WriteLine("这个…...
【Linux】结构化命令
结构化命令structured command:允许脚本根据条件跳过部分命令,改变执行流程。 1、if-then语句 格式1: if command then commands fi 格式2: if command; then commands fi 运行if之后的command命令,如果它的退出状态码…...
ElasticSearch01-概述
零、文章目录 ElasticSearch01-概述 1、Elastic Stack (1)简介 官网地址:https://www.elastic.co/cn/ELK是一个免费开源的日志分析架构技术栈总称,包含三大基础组件,分别是Elasticsearch、Logstash、Kibana。但实际…...
docker xxxx is using its referenced image ea06665f255d
Error response from daemon: conflict: unable to remove repository reference “registrxxxxxx” (must force) - container 9642fd1fd4a0 is using its referenced image ea06665f255d 这个错误表明你尝试删除的镜像正在被一个容器使用,因此无法删除。要解决这…...
Vue 2 中 v-text 和 v-html 指令的使用详解
目录 Vue 2 中 v-text 和 v-html 指令的使用详解 v-text 指令 简介 基本语法 示例 1:基础用法 特点 v-html 指令 简介 基本语法 示例 2:基础用法 注意事项 区别与选择指南 何时使用 最佳实践 Vue 2 中 v-text 和 v-html 指令的使用详解 V…...
高级Python游戏开发:创建一款多人对战坦克大战
在本教程中,我们将用Python的Pygame库开发一款高级的坦克大战游戏。这款游戏支持多人对战、碰撞检测、子弹射击以及地图障碍生成,适合作为学习Python高级游戏开发的练习项目。 一、游戏功能概述 多人对战模式:玩家可以操作坦克,在同一屏幕上互相攻击。子弹射击:坦克可以发…...
数据结构_拓扑排序
拓扑排序 (所有点按照先后顺序排序) 1.先找到入度为0的点,记录之后,删除这个点和它的出边; 2.若有两个可选,随便选择一个 例 a的入度为0,选a [a] 随便选一个 [a,e] 再找入度为0的点 再选c 最后选d 拓…...
Edge SCDN 边缘安全加速有什么用?
Edge SCDN是最新推出的边缘安全加速服务,它是一种融合了安全防护和内容分发加速功能的网络服务技术,通过在网络边缘部署服务器节点,来优化内容的传输和用户的访问体验,同时保障网络安全。 抵御 DDoS 攻击: Edge SCDN …...
被狗咬住怎么让它松口?
当遭遇狗咬住的惊险状况,保持冷静是首要原则,慌乱只会让事态愈发糟糕。因为狗能敏锐感知人类的情绪,你的镇定能避免它因你的恐惧而愈发兴奋或紧张。 切勿盲目地用力拉扯被咬住的部位。狗的咬合力颇为强大,强行拉扯可能致使伤口撕裂…...
MySQL迁移SQLite 借助PYTHON脚本
使用 Python 脚本将 MySQL 数据库迁移到 SQLite 是一种灵活且强大的方法。 下面是一个基本的脚本示例,使用 pandas 和 sqlite3 库来实现这一过程。 这个脚本假设你已经安装了 pandas 和 mysql-connector-python 库。 步骤 安装必要的库: 如果尚未安装ÿ…...
Python什么是动态调用方法?What is Dynamic Method Invocation? (中英双语)
什么是动态调用方法? 动态调用方法指通过方法或属性的名称,在运行时而非编译时调用对象的方法或访问其属性。换句话说,在编写代码时,方法名或属性名可以是变量,只有在程序运行时才能确定调用的内容。这种特性允许程序…...
Cesium中实现仿ArcGIS三维的动态图层加载方式
Cesium 加载 ArcGIS 动态图层的方式 如果你在 Cesium 中加载过 ArcGIS 的动态图层,你会发现,Cesium 对于动态图层仍然采用类似切片图层的逻辑进行加载。也就是每个固定的瓦片 export 一张图片。 这样会造成一些问题: 请求量大,…...
数据冒险、控制冒险、结构冒险
计算机组成原理 数据冒险、控制冒险、结构冒险 对所有用户(所有程序员)可见:PSW、PC、通用寄存器 PSW(条件转移需要用到,程序员使用CMP指令的时候也需要用到所以是对用户可见)PC(跳转指令需要…...
TCA9555芯片手册解读(6)
接前一篇文章:TCA9555芯片手册解读(5) 二、详述 7. 上电复位 当电源(从0V)施加到VCC时,内部通电复位将TCA9555保持在复位状态,直到VCC达到VPOR。此时,重启条件被释放,T…...
NodeJs-fs模块
fs 全称为 file system ,称之为 文件系统 ,是 Node.js 中的 内置模块, fs模块可以实现与硬盘的交互,例如文件的创建、删除、重命名、移动,内容的写入读取等以及文件夹相关操作 写入文件 异步写入 // 导入fs模块const f…...
Transformer: Attention Is All You Need (2017) 翻译
论文:Attention Is All You Need 下载地址如下: download: Transformer Attention Is All you need Attention Is All You Need 中文 《Attention Is All You Need》是《Transformer》模型的开创性论文,提出了一种全新的基于注意力机制的架构…...
【记录】Django解决与VUE跨域问题
1 梗概 这里记录Django与VUE的跨域问题解决方法,主要修改内容是在 Django 中。当然其他的前端项目 Django 也可以这样处理。 2 安装辅助包 pip install django-cors-headers3 配置 settings.py INSTALLED_APPS [ # ... corsheaders, # ... ] 为了响应…...
Java 常见Exception异常解决方法
在Java编程中,异常处理是确保程序稳定性和健壮性的重要部分。了解常见的异常类型及其解决方法,可以帮助你编写更加健壮的代码。以下是一些常见的Java异常及其解决方法: NullPointerException:空指针异常 原因:尝试访问…...
东方通 TongWebV7 Docker 部署与 Spring Boot 集成指南
东方通 TongWebV7 Docker 部署与 Spring Boot 集成指南 文章目录 东方通 TongWebV7 Docker 部署与 Spring Boot 集成指南 一 TongWeb V7二 Spring Boot JAR 配置文件三 修改 maven 依赖四 docker compose 启动项目五 查看 docker 信息 本文详细讲解了如何在 Docker 环境中…...
TIM输入捕获---STM
一、简介 IC输入捕获 输入捕获模式下,当通道输入引脚出现指定电平跳变时,当前CNT的值将被锁存在CCR中,可用于测量PWM波形的频率、占空比、脉冲间隔、电平持续时间等参数 每个高级定时器和通用定时器都拥有4个输入捕获通道 可配置为PWMI模…...
全球主流数字高程模型(DEM)数据集对比与实战应用指南
1. 数字高程模型(DEM)入门:为什么你需要了解这些数据? 第一次接触数字高程模型(DEM)时,我完全被各种缩写搞晕了——SRTM、ASTER、AW3D30...这些字母组合到底代表什么?直到参与山区洪…...
xray mitm模块配置全解析:从证书路径到访问限制的避坑指南
Xray MITM模块配置全解析:从证书路径到访问控制的实战指南 当你第一次在终端里看到could not find expected :这样的错误提示时,可能完全摸不着头脑。作为一款强大的安全评估工具,Xray的MITM(中间人)模块配置确实存在不…...
Windows Server 2025 Hyper-V GPU虚拟化实战:从分区到实时迁移
1. Windows Server 2025 Hyper-V GPU虚拟化核心升级 如果你还在用传统方式给虚拟机独占分配GPU资源,那真的out了。Windows Server 2025带来的Hyper-V GPU虚拟化技术彻底改变了游戏规则。我最近在实验室环境实测发现,新版本通过**GPU分区(GPU-…...
OpenGL渲染与几何内核那点事-项目实践理论补充(三-1-(2):当你的CAD代码变得“又大又乱”:从手动编译到CMake,从随性编码到单元测试))
TOC 代码仓库入口: github源码地址。gitee源码地址。 系列文章规划: …见内容管理OpenGL渲染与几何内核那点事-项目实践理论补充(一-1-(8)-番外篇:当你的 CAD 遇上“活”的零件)OpenGL渲染与几何内核那点事-项目实践理论补充(一-2-(1)-当你…...
IOSignal:面向Arduino的轻量级WebRTC信令库
1. IOSignal Arduino 客户端库技术解析IOSignal 是一个面向嵌入式 WebRTC 场景的轻量级信令协议栈,专为资源受限的 Arduino 平台设计。其核心价值不在于替代 WebRTC 数据通道,而在于以极低开销完成端到端连接建立前的关键握手环节——即信令交换…...
MetaQTL元分析实战:从文献整理到结果可视化的保姆级流程(附避坑指南)
MetaQTL元分析实战:从文献整理到结果可视化的保姆级流程(附避坑指南) 基因组学研究正迎来数据爆炸的时代,单个QTL研究往往受限于样本量和实验设计,而MetaQTL分析通过整合多源数据,能显著提高QTL检测的统计效…...
2026年药学论文降AI工具推荐:药理研究和临床试验部分怎么处理
2026年药学论文降AI工具推荐:药理研究和临床试验部分怎么处理 同学群里有人问药学论文降AI工具推荐,我发现自己每次回答都差不多——嘎嘎降AI。干脆写一篇详细的推荐文章,省得每次重复。 直接结论:嘎嘎降AI(www.aigc…...
2026年维普AI率检测超标反复怎么办:根本原因和彻底解决方法
2026年维普AI率检测超标反复怎么办:根本原因和彻底解决方法 花了300多块试了7款工具,最后总结出来其实5块钱就能搞定。 维普AI率超标这件事,我走了很多弯路。这篇文章把我的经验教训都整理出来,帮你省钱省时间。核心推荐嘎嘎降A…...
HJ161 走一个大整数迷宫
题目题解(10)讨论(4)排行 中等 通过率:40.12% 时间限制:1秒 空间限制:256M 知识点广度优先搜索(BFS) 校招时部分企业笔试将禁止编程题跳出页面,为提前适应,练习时请使用在线自测,而非本地IDE。 描述 …...
QEi编码器接口原理与工业级抗干扰实战指南
1. 编码器(Encoder)QEi模块技术深度解析1.1 概述:为何QEi是嵌入式运动控制的底层基石在电机驱动、机器人关节反馈、精密定位平台等实时运动控制系统中,正交编码器(Quadrature Encoder)是最核心的位置与速度…...
