环球观察:协程这么好,它能完全代替线程么?
好多问题呀,开始回答或者提问前,其实可以看看问题本身是不是有问题,像黄执中一样。
------
这个问题首先前提就有问题,谁说协程那么好的?任何技术肯定都有自己的适用场景,这种通用层面的技术则更是了。
(资料图片)
协程本质上就是由用户代码主动在某个时间点出让 CPU,可以在任何一行出让,当然语言层或框架层的协程一般会在原本是阻塞函数的调用内部,让出 CPU 资源,不阻塞当前线程。
当然像 go 这种协程做的特别牛逼的,牛逼到它自己都不想承认自己是协程的语言,就另说了。
所以协程一般适用于 IO 密集型的高并发场景。
你要说就完全 CPU 密集型计算,那还不如开你 CPU 核数那么多线程呢,开了协程反而不能并行了,还多了协程间切换的损耗。
所以协程那么好,这句话就可以否了,同时也顺便拿出了一个场景,说明用协程替换线程是负优化的,自然协程也不能完全替换线程。
------
再有,刚刚是站在应用程序角度考虑,要分场景看是使用协程还是线程。再从操作系统层面考虑,协程就根本无法替代线程了。
你想,协程需要自己主动出让 CPU 资源,那要是操作系统使用协程来运行应用程序,那万一应用程序自己一直不出让 CPU,也不调用能产生阻塞操作进而间接出让 CPU 的代码,那不就坏事了。
再有,协程本身的优势在于切换成本小,本质是因为栈小,而且也不需要切换页表。
那要是操作系统真的拿协程来跑多应用程序,这些优势也就不复存在了,而且如果协程实现在了内核态,本身从用户态陷入内核态的切换也少不了。
所以本来协程有的优势,在这里全没了,还极大增加了不公平性。
------
最后,这俩事情本身就不好讨论替换这一说,因为他们本质都不一样。
协程说白了就是一段串行的指令流,只不过中间哪个地方往哪跳的逻辑,被封装在了 "协程" 这个概念里而已。
再者,协程本身也是要跑在线程中的,需要有载体,他们二者本身就是相辅相成的关系,何来替代呢,更别说完全替代了。
有时候,了解清楚一项技术的本质,就能更好看清这些问题的荒诞了。
今天阳了躺在床上实在无聊,就挑了个知乎上的问题回答了一下,看好多回答都没说在点子上,就码了这些字,感兴趣的同学可以点开阅读原文看看。
相关阅读
精彩推荐
- 环球观察:协程这么好,它能完全代替线程么?
- 全球播报:南安市石井镇第二中心幼儿园正式投用
- 焦点讯息:勘设股份董秘回复:投资者朋友截至2022年11月18日,公司股东总户数为23659
- 12月19日基金净值:永赢双利债券A最新净值1.2874,跌0.29%
- 环球简讯:太给力了!曝小米13 UItra将配备16GB+512GB/1TB
- 天天热消息:网贷逾期33天了还不上会有什么后果
- 56岁美魔女白灵吃火锅突脱衣,秀火辣身材掀热议
- 深纺织A:拟收购恒美光电全部股权或控股权 股票停牌
- 环球热讯:美股基本平开 市场静待美联储利率决议
- 即时:偷税漏税偷税3000万是什么罪
- 【环球时快讯】时代出版: 事前认可意见
- 合同诈骗罪既遂是怎么样的
- 天天亮点!一次看完梅安森财务分析2022-09
- 全球新消息丨12月15日众生药业涨7.42%,招商医药健康产业股票基金重仓该股
- 天天观焦点:特发服务:12月14日获融资买入2281.31万元
- 【全球聚看点】厦门钨业拟对金龙稀土混改 计划新建5000吨稀土材料产能
- 宜阳县税务局多点发力筑牢疫情防控网
- 神州数码(000034)12月13日主力资金净买入694.91万元
- 环球最资讯丨佛塑科技: 佛塑科技第十一届董事会第三次会议决议公告
- 重点聚焦!招商证券:首予绿叶制药强烈推荐评级 关注药品板块过渡阶段投资机会
- 宣恩县实现村级快递收投服务全覆盖,激活农村消费市场一池春水
- 志晟信息(832171)12月12日游资资金净买入18.82万元
- 德赛西威(002920)12月9日主力资金净买入1658.70万元
- 全球看热讯:有棵树:公司跨境电商业务收入占营业收入90%以上
- 天天快资讯:智通A股限售解禁一览|12月8日
- 【机构调研记录】华安基金调研安集科技、龙芯中科等10只个股(附名单)
- 白云区多措并举助企纾困解难 进一步助推辖区企业平稳有序发展
- 商务部:11月份猪肉批发均价环比上涨26.7% 同比下降40%
- 国际滑联公布北京冬奥会速滑项目席位 中国队获得22席
- 商务部:11月份猪肉批发均价环比上涨26.7% 同比下降40%