焦点日报:协程这么好,它能完全代替线程么?
好多问题呀,开始回答或者提问前,其实可以看看问题本身是不是有问题,像黄执中一样。
------
这个问题首先前提就有问题,谁说协程那么好的?任何技术肯定都有自己的适用场景,这种通用层面的技术则更是了。
(相关资料图)
协程本质上就是由用户代码主动在某个时间点出让 CPU,可以在任何一行出让,当然语言层或框架层的协程一般会在原本是阻塞函数的调用内部,让出 CPU 资源,不阻塞当前线程。
当然像 go 这种协程做的特别牛逼的,牛逼到它自己都不想承认自己是协程的语言,就另说了。
所以协程一般适用于 IO 密集型的高并发场景。
你要说就完全 CPU 密集型计算,那还不如开你 CPU 核数那么多线程呢,开了协程反而不能并行了,还多了协程间切换的损耗。
所以协程那么好,这句话就可以否了,同时也顺便拿出了一个场景,说明用协程替换线程是负优化的,自然协程也不能完全替换线程。
------
再有,刚刚是站在应用程序角度考虑,要分场景看是使用协程还是线程。再从操作系统层面考虑,协程就根本无法替代线程了。
你想,协程需要自己主动出让 CPU 资源,那要是操作系统使用协程来运行应用程序,那万一应用程序自己一直不出让 CPU,也不调用能产生阻塞操作进而间接出让 CPU 的代码,那不就坏事了。
再有,协程本身的优势在于切换成本小,本质是因为栈小,而且也不需要切换页表。
那要是操作系统真的拿协程来跑多应用程序,这些优势也就不复存在了,而且如果协程实现在了内核态,本身从用户态陷入内核态的切换也少不了。
所以本来协程有的优势,在这里全没了,还极大增加了不公平性。
------
最后,这俩事情本身就不好讨论替换这一说,因为他们本质都不一样。
协程说白了就是一段串行的指令流,只不过中间哪个地方往哪跳的逻辑,被封装在了 "协程" 这个概念里而已。
再者,协程本身也是要跑在线程中的,需要有载体,他们二者本身就是相辅相成的关系,何来替代呢,更别说完全替代了。
有时候,了解清楚一项技术的本质,就能更好看清这些问题的荒诞了。
今天阳了躺在床上实在无聊,就挑了个知乎上的问题回答了一下,看好多回答都没说在点子上,就码了这些字,感兴趣的同学可以点开阅读原文看看。
相关新闻
- 焦点日报:协程这么好,它能完全代替线程么?
- 全球资讯:原创 月底见,Redmi K60系列规格提升,调教比小米13系列还严苛
- 中国农业科学院遴选年度10项农业科学前沿重大基础科研成果
- 半年后的世界杯有中国队了!女足世界杯明年7月开打 中国女足和英格兰、丹麦同组|百事通
- 暴扣!盖帽!三分!打爆锡安!这个人能力,太恐怖了…|世界快播
- 环球讯息:外高桥造船FPSO项目H1499船完成主发电机动车
- 众信旅游: 关于"众信转债"即将停止转股暨赎回前最后一个交易日的重要提示性公告-即时看
- 港股异动 | 时代天使(06699)升6% 近两月北水增仓近4个百分点 机构看好公司疫后恢复高增长潜力:环球观点
- 全球播报:农业银行:12月16日获融资买入1.74亿元,占当日流入资金比例37.01%
- 本外币合一账户业务试点落地,横琴十余个银行网点均获试点资格|天天新消息
- 天天热点评!马斯克令人不安的一周将特斯拉投资者推向了危险边缘
- 推特冻结纽约时报等媒体7名记者账户,当事人:这就是马斯克的言论自由?-世界热点评
- 环球消息!12月13日福建省新型冠状病毒肺炎疫情情况
- 环球热点评!采用LT8697为汽车中的USB VBUS供电
- 康沣生物-B(06922.HK)于12月16日-12月21日招股 拟全球发售1111万股
- 青岛中程: 关于参加独立董事培训并取得独立董事资格证书的承诺函(赵忆波)-当前报道
- 【当前独家】明明:11月制造业和基建投资数据亮眼 是经济增长主要动力
- 交通肇事致残怎么处罚要有什么标准_环球今日报
- 天天微头条丨中直股份: 关于与中航工业集团财务有限责任公司签署金融服务框架协议暨关联交易的的公告
- 北京查处多起防疫用品价格违法案件,最高一起拟处罚30万元