协程这么好,它能完全代替线程么?_滚动
好多问题呀,开始回答或者提问前,其实可以看看问题本身是不是有问题,像黄执中一样。
------
(资料图片仅供参考)
这个问题首先前提就有问题,谁说协程那么好的?任何技术肯定都有自己的适用场景,这种通用层面的技术则更是了。
协程本质上就是由用户代码主动在某个时间点出让 CPU,可以在任何一行出让,当然语言层或框架层的协程一般会在原本是阻塞函数的调用内部,让出 CPU 资源,不阻塞当前线程。
当然像 go 这种协程做的特别牛逼的,牛逼到它自己都不想承认自己是协程的语言,就另说了。
所以协程一般适用于 IO 密集型的高并发场景。
你要说就完全 CPU 密集型计算,那还不如开你 CPU 核数那么多线程呢,开了协程反而不能并行了,还多了协程间切换的损耗。
所以协程那么好,这句话就可以否了,同时也顺便拿出了一个场景,说明用协程替换线程是负优化的,自然协程也不能完全替换线程。
------
再有,刚刚是站在应用程序角度考虑,要分场景看是使用协程还是线程。再从操作系统层面考虑,协程就根本无法替代线程了。
你想,协程需要自己主动出让 CPU 资源,那要是操作系统使用协程来运行应用程序,那万一应用程序自己一直不出让 CPU,也不调用能产生阻塞操作进而间接出让 CPU 的代码,那不就坏事了。
再有,协程本身的优势在于切换成本小,本质是因为栈小,而且也不需要切换页表。
那要是操作系统真的拿协程来跑多应用程序,这些优势也就不复存在了,而且如果协程实现在了内核态,本身从用户态陷入内核态的切换也少不了。
所以本来协程有的优势,在这里全没了,还极大增加了不公平性。
------
最后,这俩事情本身就不好讨论替换这一说,因为他们本质都不一样。
协程说白了就是一段串行的指令流,只不过中间哪个地方往哪跳的逻辑,被封装在了 "协程" 这个概念里而已。
再者,协程本身也是要跑在线程中的,需要有载体,他们二者本身就是相辅相成的关系,何来替代呢,更别说完全替代了。
有时候,了解清楚一项技术的本质,就能更好看清这些问题的荒诞了。
今天阳了躺在床上实在无聊,就挑了个知乎上的问题回答了一下,看好多回答都没说在点子上,就码了这些字,感兴趣的同学可以点开阅读原文看看。
关键词: 应用程序
精心推荐
- 协程这么好,它能完全代替线程么?_滚动
- 唯科科技(301196)12月20日股东户数2.33万户,较上期减少1.26%-全球观焦点
- 远兴能源:公司小苏打餐具净、泡腾片以及小苏打水等新品处于小批试生产阶段|焦点热讯
- 中信建投证券(06066.HK)发行40亿元债券 天天快看
- 【手慢无】放心选购SSG固态硬盘240G到手价仅99元_热资讯
- 全球热文:今日股市早盘预测与金股预判(2022/12/20)
- 全球聚焦:联特科技(301205):武汉联特科技股份有限公司独立董事关于第一届董事会第十八次会议相关事项的独立意见
- *ST辅仁(600781)12月19日主力资金净卖出304.23万元
- 环球热头条丨首届福酒高质量发展峰会在福州举办
- 潢川县教体局扎实推进“清廉学校”创建工作
- 国家航空动力计量中心获建-焦点日报
- 清远将投入3000名警力参与高考安保服务工作 天天观察
- 浪潮软件: 浪潮软件2022年股票期权激励计划实施考核管理办法|世界热点评
- 1688明确店铺在售商品数量上限 超限需下架
-
改造完成后至今,板链线运行平稳,达到了批量生产多种机型非道路国四柴油机的目标
-
大河网讯为有效遏制和重拳打击违法建设行为,2017月3月28日上午,宋城国土资源所和宋城办事处共组织90余人,出动机械车辆2台对宋城办事处张吉
-
“本轮疫情刚开始的时候对我们企业确实造成了一些影响,但是在市疫情防控指挥部和相关部门的帮助指导下问题很快就得到了解决。你看,现在我们
-
地震前的预兆:第一,有前震。大地震前几天或者几个小时,通常会有很多小地震,非常频繁。我们称之为前震。第二,动物的反常表现。地震前,有些
-
格隆汇12月14日丨致远互联(688369 SH)公布,公司于2022年12月14日收到公司控股股东、实际控制人徐石发来的《关于持有致远互联股份变动的告知函》,
X 关闭
行业排行
- 1、深圳:积极推进旅游业恢复 扎实推动经济稳定增长
- 2、保定定州提出一系列发展措施 引领体品产业向智能化品牌化高端化迈进
- 3、河北省财政厅充分发挥财政职能作用 促进交通运输事业发展
- 4、太原阳曲人才公寓项目开启施工招标工作 共有1954套人才公寓满足人才居住需求
- 5、山西出口钢构件顺利发货 为企业加强科技创新开辟了更为广阔的发展空间
- 6、上半年泰州姜堰实现新签约亿元和1000万美元以上项目95个 计划总投资208.319亿元
- 7、清华博士非洲修电站 因为他,“内卷”成为网络热词
- 8、内蒙古新增本土确诊病例3例 均在呼伦贝尔满洲里市
- 9、31省份新增新冠肺炎确诊病例67例 其中本土50例
- 10、浙江新增本土确诊病例45例 其中宁波6例、绍兴39例
X 关闭
产业
-
不用跑北京 在家门口也能挂上顶...
日前,我省首个神经疾病会诊中心——首都医科大学宣武医院河北医院...
-
“十四五”期间 河北省将优化快...
从省邮政管理局获悉,十四五期间,我省将优化快递空间布局,着力构...
-
张家口市宣化区:光伏发电站赋能...
3月19日拍摄的张家口市宣化区春光乡曹庄子村光伏发电站。张家口市宣...
-
“张同学”商标被多方抢注 涉及...
“张同学”商标被多方抢注,官方曾点名批评恶意抢注“丁真” ...
-
山东济南“防诈奶奶团”花式反诈...
中新网济南12月15日电 (李明芮)“老有所为 无私奉献 志愿服...
-
广州新增1例境外输入关联无症状...
广州卫健委今日通报,2021年12月15日,在对入境转运专班工作人...
-
西安报告初筛阳性病例转为确诊病例
12月15日10:20,经陕西西安市级专家组会诊,西安市报告新冠病毒...
-
广东东莞新增本土确诊病例2例 ...
(抗击新冠肺炎)广东东莞新增本土确诊病例2例 全市全员核酸检测...
-
中缅边境临沧:民警深夜出击捣毁...
中新网临沧12月15日电 (胡波 邱珺珲)记者15日从云南临沧边境...
-
“土家鼓王”彭承金:致力传承土...
中新网恩施12月15日电 题:“土家鼓王”彭承金:致力传承土家...