好多问题呀,开始回答或者提问前,其实可以看看问题本身是不是有问题,像黄执中一样。
------
(资料图片仅供参考)
这个问题首先前提就有问题,谁说协程那么好的?任何技术肯定都有自己的适用场景,这种通用层面的技术则更是了。
协程本质上就是由用户代码主动在某个时间点出让 CPU,可以在任何一行出让,当然语言层或框架层的协程一般会在原本是阻塞函数的调用内部,让出 CPU 资源,不阻塞当前线程。
当然像 go 这种协程做的特别牛逼的,牛逼到它自己都不想承认自己是协程的语言,就另说了。
所以协程一般适用于 IO 密集型的高并发场景。
你要说就完全 CPU 密集型计算,那还不如开你 CPU 核数那么多线程呢,开了协程反而不能并行了,还多了协程间切换的损耗。
所以协程那么好,这句话就可以否了,同时也顺便拿出了一个场景,说明用协程替换线程是负优化的,自然协程也不能完全替换线程。
------
再有,刚刚是站在应用程序角度考虑,要分场景看是使用协程还是线程。再从操作系统层面考虑,协程就根本无法替代线程了。
你想,协程需要自己主动出让 CPU 资源,那要是操作系统使用协程来运行应用程序,那万一应用程序自己一直不出让 CPU,也不调用能产生阻塞操作进而间接出让 CPU 的代码,那不就坏事了。
再有,协程本身的优势在于切换成本小,本质是因为栈小,而且也不需要切换页表。
那要是操作系统真的拿协程来跑多应用程序,这些优势也就不复存在了,而且如果协程实现在了内核态,本身从用户态陷入内核态的切换也少不了。
所以本来协程有的优势,在这里全没了,还极大增加了不公平性。
------
最后,这俩事情本身就不好讨论替换这一说,因为他们本质都不一样。
协程说白了就是一段串行的指令流,只不过中间哪个地方往哪跳的逻辑,被封装在了 "协程" 这个概念里而已。
再者,协程本身也是要跑在线程中的,需要有载体,他们二者本身就是相辅相成的关系,何来替代呢,更别说完全替代了。
有时候,了解清楚一项技术的本质,就能更好看清这些问题的荒诞了。
今天阳了躺在床上实在无聊,就挑了个知乎上的问题回答了一下,看好多回答都没说在点子上,就码了这些字,感兴趣的同学可以点开阅读原文看看。
关键词: 应用程序
协程这么好,它能完全代替线程么?|全球独家
委托加工物资会计分录怎么做
全球最资讯丨华安鑫创:公司会按照相关规则进行在手定点情况的披露
HY兴业投资:美元/加元收复日内小幅跌幅,美国PMI前仍低于1.3700
华恒生物: 安徽华恒生物科技股份有限公司关于股东减持股份结果的公告
浙江省加大涉疫医疗药品等三类涉疫物资价格监管执法力度 全球短讯
环球头条:离婚子女名下财产怎么分配
[快讯]华瑞达公布2022年半年度分红实施方案(每10股送红股6股) 热议
浙江温州乐清观潮110千伏输变电工程项目核准获批_环球速看料
12月15日基金净值:招商医药健康产业股票最新净值2.29,跌0.22%
巨星科技:参股公司中策橡胶IPO申请获受理
云内动力董秘回复:公司一直按照法律法规等要求合法合规经营,严格按照上市规则和相关规范要求履行信息披露义务
【全球新视野】大摩:维持Oshkosh(OSK.US)增持评级
西峡法院清晨出击 入户抓“老赖”
乡伴文旅付丛伟:民宿是传达文化现象的载体|快播
佛燃能源: 独立董事关于公司第五届董事会第三十八次会议相关事项的独立意见 世界热消息
被称“零差评”的5部宫斗剧,《步步惊心》勉强上榜,榜首无人超越
网贷逾期5个月暂时还不起会怎么样
合同主体变更范本
内江公积金最多贷款多少 「公积金有4000能贷款吗」|天天速看
全球快报:星源材质董秘回复:公司的锂电池隔膜技术适用于钠离子电池
格林达(603931)12月8日主力资金净买入472.56万元
优化期权结构,提升风险管理效率--华泰期货借助大商所企风计划服务食品企业
退税“甘霖”添动力 江苏常州用税惠“春风”助燃“人间烟火
“谁受益谁承担”!河北首次将需求侧响应和有序用电结合起来
河北省大中型水库总蓄水量比去年同期多蓄水11.24亿立方米
30家上市城商银行人均年薪位居首位 最高达26.88%
江苏595家上市公司市值达5.75万亿元 511家实现盈利
RCEP协定生效后 南京企业进出口实现零关税
8900万资金助力文旅市场纾困 “中国旅游日”江苏分会场启动