好多问题呀,开始回答或者提问前,其实可以看看问题本身是不是有问题,像黄执中一样。
------
(资料图)
这个问题首先前提就有问题,谁说协程那么好的?任何技术肯定都有自己的适用场景,这种通用层面的技术则更是了。
协程本质上就是由用户代码主动在某个时间点出让 CPU,可以在任何一行出让,当然语言层或框架层的协程一般会在原本是阻塞函数的调用内部,让出 CPU 资源,不阻塞当前线程。
当然像 go 这种协程做的特别牛逼的,牛逼到它自己都不想承认自己是协程的语言,就另说了。
所以协程一般适用于 IO 密集型的高并发场景。
你要说就完全 CPU 密集型计算,那还不如开你 CPU 核数那么多线程呢,开了协程反而不能并行了,还多了协程间切换的损耗。
所以协程那么好,这句话就可以否了,同时也顺便拿出了一个场景,说明用协程替换线程是负优化的,自然协程也不能完全替换线程。
------
再有,刚刚是站在应用程序角度考虑,要分场景看是使用协程还是线程。再从操作系统层面考虑,协程就根本无法替代线程了。
你想,协程需要自己主动出让 CPU 资源,那要是操作系统使用协程来运行应用程序,那万一应用程序自己一直不出让 CPU,也不调用能产生阻塞操作进而间接出让 CPU 的代码,那不就坏事了。
再有,协程本身的优势在于切换成本小,本质是因为栈小,而且也不需要切换页表。
那要是操作系统真的拿协程来跑多应用程序,这些优势也就不复存在了,而且如果协程实现在了内核态,本身从用户态陷入内核态的切换也少不了。
所以本来协程有的优势,在这里全没了,还极大增加了不公平性。
------
最后,这俩事情本身就不好讨论替换这一说,因为他们本质都不一样。
协程说白了就是一段串行的指令流,只不过中间哪个地方往哪跳的逻辑,被封装在了 "协程" 这个概念里而已。
再者,协程本身也是要跑在线程中的,需要有载体,他们二者本身就是相辅相成的关系,何来替代呢,更别说完全替代了。
有时候,了解清楚一项技术的本质,就能更好看清这些问题的荒诞了。
今天阳了躺在床上实在无聊,就挑了个知乎上的问题回答了一下,看好多回答都没说在点子上,就码了这些字,感兴趣的同学可以点开阅读原文看看。
关键词: 应用程序
协程这么好,它能完全代替线程么?_环球热消息
银盛支付荣获和讯第20届中国财经风云榜“2022年度金融科技创新”奖项
全球热讯:北京大兴机场北线高速与河北京雄高速支线12月19日实现通车
全球通讯!陆家嘴(600663):集团优质资产注入 助力业务扩张和报表优化
央行:2023年的货币政策总量要够 结构要准:世界热推荐
37岁的“舞者”莫德里奇,谢幕世界杯赛场
量化金融分析师CQF怎么考?考了有什么好处?
山西长子“冬闲”变“冬忙” 蔬菜产业尽显好“丰”景:世界通讯
小小咖啡豆 串起沪滇情谊 上海农商银行创新金融模式助力云南咖啡产业链升级
天天热点!康沣生物-B(06922.HK)12月16日起招股 发售价将为每股18.9港元
全球今头条!数源科技: 浙江天册律师事务所关于数源科技2022年第三次临时股东大会的法律意见书
中国医药拿下辉瑞新冠特效药“中国大陆市场”
世界滚动:笔记本电脑板块12月14日跌1.02%,胜利精密领跌,主力资金净流出4.82亿元
cfa成绩有效期有多久?看完你就知道了!
浦江城投1.48亿元竞得金华浦江县两宗宅地 总面积约60亩-全球播资讯
美年健康: 董事会关于召开2022年第七次临时股东大会的通知 新要闻
最新:杭叉集团:目前实际建成并投入使用的生产线及设备已超过65%
全球观天下!吉祥航空(603885)12月12日主力资金净卖出5429.44万元
恒投证券(01476.HK):牛壮辞任公司总裁-天天速看
世界快资讯:18英寸超震撼 外星人巨屏游戏本即将回归
猎鹰解期:12月12日期货操作建议
举重世锦赛 | 李发彬打破男子61公斤级挺举世界纪录-新动态
鄱阳湖畔的候鸟课堂|每日动态
威高骨科:传统加工工艺受到结构的限制,增加了产品的加工周期和成本等:每日聚焦
美国美妆品牌Hourglass中国内地首店开业 新零售方式吸引年轻消费者
玛西普医学科技发展(深圳)有限公司战略总监韩通平接受人民网专访
瞭望·治国理政纪事丨战略空军御风而翔
“与北京冬奥同行”
2021商务印书馆“十大好书评选”揭晓
进博会效应持续释放 “双循环”加速惠及全球
美术作品中的党史 | 第74集《和平使命》
进博奇遇记:走进“舌尖上的进博会” 食品及农产品展区观众络绎不绝
深入推进“昆仑2021”行动 公安机关依法严厉打击利用互联网侵权假冒犯罪
冰雪之约 中国之邀|一路美景!带你解锁“冬奥大道”
数读进博会 | 贸易投资对接会收获满满!超千家中外企业达成200余项合作意向
南水北调大事记 为你解锁跨越半个世纪的超级工程
相关新闻