最新要闻
- 天天观点:NVIDIA御用游戏《赛博朋克2077》终于支持DLSS 3:性能暴涨3.9倍!
- 天天热推荐:机械硬盘:彻底陨落
- 天天热头条丨地球最黑暗的时刻:被狂轰滥炸长达2000万年
- 信息:游客岳飞观高喊“还我河山” 砸打秦桧像:景区已报警
- 焦点热文:丰田章男:一年卖出1049万辆汽车!却败给了电动车
- 环球快报:特斯拉2022年在华营收181.45亿美元:占比降至约22%
- 天天微动态丨千呼万唤始出来 《赛博朋克2077》正式支持DLSS3
- 神十五乘组太空过春节!这一看就是咱中国的空间站:红红火火
- 直播:5万年一遇绿色彗星逼近地球 肉眼可见
- 世界焦点!河南矿山开工招聘电话被打爆:因6100万奖金火出圈
- 天天热议:对不起!《狂飙》反派集体直播“道歉”:阵势让网友欢呼太上头
- 观热点:日本厂商2023年推出新款磁带收音机:支持U盘数据转录
- 天天日报丨戴尔灵越Pro 2023系列上架:13代酷睿P系 5999元起
- 天天观焦点:女子有洁癖:每天消杀双手10次 结果患乏脂性皮炎
- 最新快讯!彻底消灭自燃!宝马今年开始测试固态电池:计划两年后装车
- 世界信息:情人节倒计时 国外动物园想出报复前任的绝妙点子:蟑螂惨了
广告
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
netcore之异步并不是多线程!
1、遇到await,线程的变化
遇到await会把当前线程返回且返回值就是await后面的Task,再从线程池随机取一个线程往下执行代码。
我们使用封装好的异步方法模拟写入大量字符串的耗时操作:
(相关资料图)
static async Task Main(string[] args) { //原线程 Console.WriteLine(Thread.CurrentThread.ManagedThreadId); //模拟写入大量字符串的耗时操作 StringBuilder str = new StringBuilder(); for (int i = 0; i < 1000; i++) { str.Append("Hello World!"); } await File.WriteAllTextAsync(@"C:\Users\张跑跑\Desktop\net\async\1.txt", str.ToString()); //异步之后线程 Console.WriteLine(Thread.CurrentThread.ManagedThreadId); }
结果显示前后线程不一致
那么问题来了,首先会随机到原来的线程吗?答案是会的,发生在异步操作所需时间很少的情况下。现在,我们仅仅把上述代码的循环次数缩短
static async Task Main(string[] args) { ...... //降为10次 for (int i = 0; i < 10; i++) { str.Append("Hello World!"); } ...... }
可以看到,线程未改变。(作一个比喻就是,前台(当前线程)放你进店,服务员(新线程)把你领到座位上后忙自己的事,所以你点完菜可能是另一个服务员传,但服务员还没走远,你就点完了菜,那只好她继续上传菜单了)
参考:https://zhuanlan.zhihu.com/p/343235838https://www.cnblogs.com/jiangchengbiao/p/10040899.html
2、异步不等于多线程
自定义的异步方法并不会自动在新线程中执行,除非手动new线程、或者委托、或使用封装好的异步方法
我们模拟一个自定义异步方法
static async Task Main(string[] args) { //原线程 Console.WriteLine("原线程:" + Thread.CurrentThread.ManagedThreadId); double r = await TestAsync(); Console.WriteLine(r); //异步之后线程 Console.WriteLine("异步后线程:" + Thread.CurrentThread.ManagedThreadId); } static async Task TestAsync() { //异步中线程 Console.WriteLine("异步后线程:" + Thread.CurrentThread.ManagedThreadId); double n = 0; Random random = new Random(); for (int i = 0; i < n * n; i++) { n = random.NextDouble(); } return n; }
结果是线程未改变
现在我们模拟一个委托
static async Task Main(string[] args) { //原线程 Console.WriteLine("原线程:" + Thread.CurrentThread.ManagedThreadId); double r = await TestAsync1(); Console.WriteLine(r); //异步之后线程 Console.WriteLine("异步后线程:" + Thread.CurrentThread.ManagedThreadId); } static async Task TestAsync() { return await Task.Run(() => { //异步中线程 Console.WriteLine("异步后线程:" + Thread.CurrentThread.ManagedThreadId); double n = 0; Random random = new Random(); for (int i = 0; i < n*n; i++) { n = random.NextDouble() ; } return n; }); }
可以看到。此时的线程发生了改变
并且注意到,异步中和异步结束后的线程还是一致,前面提到是随机,难道真这么巧?在多次改变for的次数下,貌似不是随机的,难道除了自定义现在连委托也,但具体情况在我的认知盲区!!!我们知道切换线程是要消耗存在大量程序上下文开销,所以就猜想这是net给优化了吧
# async+await 和同步执行有什么好处,都是要一个线程干活,一条龙干到底不好吗,非得自己干到一半交给另一个线程去干,别人干活不用开销吗?这个问题的关键就是有些IO事情真的不需要CPU派一个线程去干,去了也干不了。比如读写文件,以往同步方法时,派一个线程去读写点东西的时候,这个线程肯定是等在那的,读写这个事情是硬盘去做的,线程就是个使者,告诉硬盘要做哪些事就行,硬盘干完活就告诉线程,线程拿着结果开心地继续干下面的活。那异步就是线程通知硬盘去读写后自己就回去该干嘛干嘛去,不必等在硬盘家门口等消息。硬盘读写的时候,这个线程是非阻塞的,可以干其他活,提高效率。硬盘读写完,会通知CPU,叫他派一个线程来拿结果,(如果框架是单线程的,那还是这个线程过来)这个线程拿到结果后会继续执行之前那个线程未干完的活,至于上下文信息,底层会交代好,不在这里讨论,太深。这个IO事情有很多,比如访问数据库,请求网络等。
netcore之异步并不是多线程!
天天观点:NVIDIA御用游戏《赛博朋克2077》终于支持DLSS 3:性能暴涨3.9倍!
天天热推荐:机械硬盘:彻底陨落
天天热头条丨地球最黑暗的时刻:被狂轰滥炸长达2000万年
信息:游客岳飞观高喊“还我河山” 砸打秦桧像:景区已报警
焦点热文:丰田章男:一年卖出1049万辆汽车!却败给了电动车
环球快报:特斯拉2022年在华营收181.45亿美元:占比降至约22%
天天微动态丨千呼万唤始出来 《赛博朋克2077》正式支持DLSS3
神十五乘组太空过春节!这一看就是咱中国的空间站:红红火火
天天热头条丨MySQL之MVCC总结理解
环球关注:autojs实例02-为朋友圈指定好友点赞
Prometheus&Grafana基本使用
直播:5万年一遇绿色彗星逼近地球 肉眼可见
python教程:shutil高级文件操作
当前播报:自定义ConditionalOnXX注解(二)
世界焦点!河南矿山开工招聘电话被打爆:因6100万奖金火出圈
天天热议:对不起!《狂飙》反派集体直播“道歉”:阵势让网友欢呼太上头
观热点:日本厂商2023年推出新款磁带收音机:支持U盘数据转录
天天日报丨戴尔灵越Pro 2023系列上架:13代酷睿P系 5999元起
DDS结构的FPGA实现
【算法训练营day34】LeetCode1005. K次取反后最大化的数组和 LeetCode134. 加油站 LeetCode135. 分发糖果
天天观焦点:女子有洁癖:每天消杀双手10次 结果患乏脂性皮炎
最新快讯!彻底消灭自燃!宝马今年开始测试固态电池:计划两年后装车
世界信息:情人节倒计时 国外动物园想出报复前任的绝妙点子:蟑螂惨了
当前速讯:宏碁杀入显卡市场!通吃Intel/AMD、不碰NVIDIA
新资讯:《狂飙》热播!湖南一网吧凌晨变《狂飙》专场
实时焦点:如何手动补充陈年老库(或纯 JS 代码)的 TypeScript 类型?
中国新车质量榜:前四均被合资车企包揽 本田最大赢家
刷新中国影史记录!2023年院线全年总票房已破百亿
播报:男生和女生初四相亲初八订婚:称不想耽误节后上班!网友惊到
全球热头条丨《黑豹2》中国角色海报发布:全员黑色皮肤 2月7日上映
看点:我国自研水陆飞机!“鲲龙”AG600M全面进入型号取证试飞阶段
博客园主题美化DIY教程
全球短讯!优秀前端都应该具备的开发好习惯,坚持了效率翻倍
每日视讯:有博主称《满江红》制作成本不到1000万!歌手胡彦斌一番话上了热搜第一
视焦点讯!Xbox月活用户突破1.2亿!微软赢麻了
全球快看:强盛集团橱窗上架《孙子兵法》:还卖小灵通手机壳
迄今为止最庞大的公版显卡来了?RTX 4090Ti/Titan曝光
比亚迪正式进军日本市场卖车:“两田一产”如临大敌
世界消息!Linux 服务器Python后台运行服务(ssh断开不退出)
资讯推荐:Docker-consul的容器服务更新与发现
【天天时快讯】记录--手把手教学,实现一个优雅的图片预览
每日快报!首款车明年量产!小米汽车最新专利公布:手表控制车有戏
天天热文:A卡游戏画面鲜艳 N卡灰蒙蒙?可能是这里设置错了
焦点播报:北美杀入前十后《流浪地球2》官宣:2月9日在中国香港及澳门上映
焦点简讯:三体人为什么那么害怕地球人的加速器?中科院科普
中国航天科技喊话《流浪地球2》:太空天梯、地球车站、空间驿站有望实现
全球报道:网易二面:CPU狂飙900%,该怎么处理?
每日看点!男子打赏女主播1.8万后起诉欲要回!最终被驳回诉求
焦点速递!男子寄5万元笔记本被摔坏索赔遭拒:屏幕、键盘都烂了 维修要2万
动视暴雪点赞《最后生还者》:索尼令人敬畏 我们被收购是应该的
天天热头条丨官网12.4万元帕纳梅拉遭抢购 保时捷:情况属实 已与首单用户达成协议
当前观察:索尼PS5现货全开放!黄牛惨了:带大量机器退货遭拒
环球资讯:Redis数据结构实战演练,看看微博、微信、购物车、抽奖小程序是如何使用的?
全球聚焦:【促进开发】上海道宁与DHTMLX为您提供易于使用且功能丰富的JavaScript组件
APITable:免费开源的多维表格与可视化数据库,上线1天斩获GitHub星标1000+
今日精选:HTTP笔记1--网络模型
环球速讯:selenium + python自动化测试环境搭建
刘慈欣:30年前拍不成《流浪地球2》 投资人不会信的
观热点:SSD性能领先35倍 机械硬盘命悬一线:没啥理由买
【全球速看料】流浪小狐狸投奔看守所1年胖成球:今年要帮它减肥
不止砍掉UFS 4.0:三星Galaxy S23标准版遭全方位缩水
c++代码实现中时间复杂度的不断优化
聚焦:一步一步实现若依框架--2.4数据权限 data_scope
800W功耗!RTX 4090 Ti四插槽"核弹"真的有 但不一定能生出来
全球微速讯:《最后生还者》剧集第3集与游戏对比 还原度高
实时焦点:摩托骑手广东高速上恶意损坏其他车辆 官方回应:一刀切禁摩很好?
天天观察:云萌 V2.6.3.0 win10,win11 Windows永久激活工具
热推荐:基于Spring Cache实现Caffeine、jimDB多级缓存实战
portswigger 靶场之 XSS 篇 (下)
全球最新:【算法训练营day32】LeetCode122. 买卖股票的最佳时机II LeetCode55. 跳跃游戏 LeetCode45. 跳跃游戏II
部署Kubernetes Cluster
每日短讯:12.4万买新帕纳梅拉!近600名国内网友保时捷官网疯抢:成功下单后被取消
【全球时快讯】奔驰获全球首家L3级自动驾驶认证:开车不用看路 出事故奔驰负责
【快播报】优酷回应1元会员被扣24元争议:活动规则已告知 扣钱没毛病
当前热文:水墨风场景惊艳!《仙剑奇侠传7》DLC《人间如梦》官宣2月发售
彻底扑灭一台特斯拉Model S有多难 消防员实测:用了22.7吨水
天天快消息!Android 软键盘丝滑切换(一)
天天看点:视频发布失败原因不好找?火山引擎数智平台这款产品能帮忙
速看:OpenYurt v1.2 新版本深度解读(一): 聚焦边云网络优化
【环球播资讯】小鹏股价暴跌、交付量惨淡 何小鹏专访回应:未来会这么做
全球动态:全球首个!婴幼儿视功能损伤手机智能筛查系统面世
撸猫手感 绿联iPhone 12-14系列液态硅胶保护壳9.9元起
天天快看点丨海淘不香了!日版Xbox主机涨价将近260元
天天速递!全国首烧?疑似红旗E-HS9充电时起火 现场黑烟弥漫
瑾娘为什么要杀华裳?瑾娘为什么假扮巽芳?
爱在旅途大结局是什么?爱在旅途剧情介绍
法国属于西欧还是北欧?南欧包括哪些国家?
荷兰为什么被称为水之国?荷兰水之国的资料简介
长宽高的英文缩写分别是什么?长宽高怎么算平方?
oppor7手机版本低怎么升级?oppo r7手机参数
复工第一天:请马上卸载这个恶心的软件!!!
全球看热讯:python-paramiko操作的封装
无法定位序数是什么意思?无法定位序数怎么解决?
打印机驱动在电脑哪里找?如何卸载打印机驱动?
无线适配器或访问点有问题是什么意思?无线适配器或访问点有问题怎么处理?
魅族手机怎么样?魅族手机锁屏密码忘了怎么解开?
环球速讯:工信部明天起优化调整微波频率 为5G/6G预留频谱资源
【独家】美国下手真狠!沃尔沃在美被罚8.7亿元 史上最大
快消息!APP竟比线下贵一倍还多 有电影院劝说观众退订淘票票