好多问题呀,开始回答或者提问前,其实可以看看问题本身是不是有问题,像黄执中一样。
------
这个问题首先前提就有问题,谁说协程那么好的?任何技术肯定都有自己的适用场景,这种通用层面的技术则更是了。
(资料图)
协程本质上就是由用户代码主动在某个时间点出让 CPU,可以在任何一行出让,当然语言层或框架层的协程一般会在原本是阻塞函数的调用内部,让出 CPU 资源,不阻塞当前线程。
当然像 go 这种协程做的特别牛逼的,牛逼到它自己都不想承认自己是协程的语言,就另说了。
所以协程一般适用于 IO 密集型的高并发场景。
你要说就完全 CPU 密集型计算,那还不如开你 CPU 核数那么多线程呢,开了协程反而不能并行了,还多了协程间切换的损耗。
所以协程那么好,这句话就可以否了,同时也顺便拿出了一个场景,说明用协程替换线程是负优化的,自然协程也不能完全替换线程。
------
再有,刚刚是站在应用程序角度考虑,要分场景看是使用协程还是线程。再从操作系统层面考虑,协程就根本无法替代线程了。
你想,协程需要自己主动出让 CPU 资源,那要是操作系统使用协程来运行应用程序,那万一应用程序自己一直不出让 CPU,也不调用能产生阻塞操作进而间接出让 CPU 的代码,那不就坏事了。
再有,协程本身的优势在于切换成本小,本质是因为栈小,而且也不需要切换页表。
那要是操作系统真的拿协程来跑多应用程序,这些优势也就不复存在了,而且如果协程实现在了内核态,本身从用户态陷入内核态的切换也少不了。
所以本来协程有的优势,在这里全没了,还极大增加了不公平性。
------
最后,这俩事情本身就不好讨论替换这一说,因为他们本质都不一样。
协程说白了就是一段串行的指令流,只不过中间哪个地方往哪跳的逻辑,被封装在了 "协程" 这个概念里而已。
再者,协程本身也是要跑在线程中的,需要有载体,他们二者本身就是相辅相成的关系,何来替代呢,更别说完全替代了。
有时候,了解清楚一项技术的本质,就能更好看清这些问题的荒诞了。
今天阳了躺在床上实在无聊,就挑了个知乎上的问题回答了一下,看好多回答都没说在点子上,就码了这些字,感兴趣的同学可以点开阅读原文看看。
关键词: 应用程序
协程这么好,它能完全代替线程么?
博泰、上汽通用五菱与腾讯知识产权纠纷案达成和解 环球报道
当前要闻:润建股份投资成立新公司,经营范围含集成电路销售等
@上海市民,当好健康第一责任人,养成“三清”好习惯! 播报
班凯罗20+5+5魔术爆冷凯尔特人 塔图姆空砍31+7
美国FDA将于明年1月召开会议 考虑进一步更新新冠疫苗|环球热头条
世界快报:高盛:维持Kymera Therapeutics(KYMR.US)买入评级
《勇敢的翅膀》张晚意再度挑中王牌剧本,这次又要火一把
全球消息!合同格式是如何写的,规定是什么的呢
游族网络: 关于持股5%以上股东被动减持期限届满暨实施情况的公告|全球今头条
华东数控(002248)12月15日主力资金净卖出1424.07万元 热点
富临精工董秘回复:公司始终重视和加强投资者关系,强化服务和回报股东的意识,进一步提升公司综合竞争力_环球焦点
国泰航空11月载客量同比提升超6.5倍 客运运力增长34% 焦点消息
环球热点评!水利部:中国农村自来水普及率达到87%
海利生物:12月13日获融资买入395.46万元,占当日流入资金比例8.09%
热讯:12月13日青岛食品(001219)龙虎榜数据:机构净卖出311.02万元
京新药业董秘回复:近期公司目标主要为积极推进地达西尼在国内的报产审批,但是否获批仍有不确定性 今日快讯
三只松鼠: 章程修订案
全球信息:蜕变
联翔股份: 公司章程(2022年12月)
多家房企抛出股权融资方案 地产行业困境反转?
海外财经媒体焦点:花旗料美国明年陷入衰退 大摩再度下调苹果Q4 iPhone出货预期_全球速看料
华鼎股份: 义乌华鼎锦纶股份有限公司第五届监事会第十九次会议决议公告-热点
退税“甘霖”添动力 江苏常州用税惠“春风”助燃“人间烟火
“谁受益谁承担”!河北首次将需求侧响应和有序用电结合起来
河北省大中型水库总蓄水量比去年同期多蓄水11.24亿立方米
30家上市城商银行人均年薪位居首位 最高达26.88%
江苏595家上市公司市值达5.75万亿元 511家实现盈利
RCEP协定生效后 南京企业进出口实现零关税
8900万资金助力文旅市场纾困 “中国旅游日”江苏分会场启动