每日快看:协程这么好,它能完全代替线程么?
好多问题呀,开始回答或者提问前,其实可以看看问题本身是不是有问题,像黄执中一样。
(资料图片)
------
这个问题首先前提就有问题,谁说协程那么好的?任何技术肯定都有自己的适用场景,这种通用层面的技术则更是了。
协程本质上就是由用户代码主动在某个时间点出让 CPU,可以在任何一行出让,当然语言层或框架层的协程一般会在原本是阻塞函数的调用内部,让出 CPU 资源,不阻塞当前线程。
当然像 go 这种协程做的特别牛逼的,牛逼到它自己都不想承认自己是协程的语言,就另说了。
所以协程一般适用于 IO 密集型的高并发场景。
你要说就完全 CPU 密集型计算,那还不如开你 CPU 核数那么多线程呢,开了协程反而不能并行了,还多了协程间切换的损耗。
所以协程那么好,这句话就可以否了,同时也顺便拿出了一个场景,说明用协程替换线程是负优化的,自然协程也不能完全替换线程。
------
再有,刚刚是站在应用程序角度考虑,要分场景看是使用协程还是线程。再从操作系统层面考虑,协程就根本无法替代线程了。
你想,协程需要自己主动出让 CPU 资源,那要是操作系统使用协程来运行应用程序,那万一应用程序自己一直不出让 CPU,也不调用能产生阻塞操作进而间接出让 CPU 的代码,那不就坏事了。
再有,协程本身的优势在于切换成本小,本质是因为栈小,而且也不需要切换页表。
那要是操作系统真的拿协程来跑多应用程序,这些优势也就不复存在了,而且如果协程实现在了内核态,本身从用户态陷入内核态的切换也少不了。
所以本来协程有的优势,在这里全没了,还极大增加了不公平性。
------
最后,这俩事情本身就不好讨论替换这一说,因为他们本质都不一样。
协程说白了就是一段串行的指令流,只不过中间哪个地方往哪跳的逻辑,被封装在了 "协程" 这个概念里而已。
再者,协程本身也是要跑在线程中的,需要有载体,他们二者本身就是相辅相成的关系,何来替代呢,更别说完全替代了。
有时候,了解清楚一项技术的本质,就能更好看清这些问题的荒诞了。
今天阳了躺在床上实在无聊,就挑了个知乎上的问题回答了一下,看好多回答都没说在点子上,就码了这些字,感兴趣的同学可以点开阅读原文看看。
标签: 应用程序
为您推荐
广告
- 禾加一笔组成新字_禾加一笔
- 北溪2号项目是哪国的 美国制裁是什么意思 全球今亮点
- B!公寓|当前短讯
- 全球微速讯:语文教育教学心得体会(通用8篇)
- 【天天新要闻】Plan OMEGA(part OMEGA!tale前传补充)
- 甘肃投亿元完善运动设施 人均体育场地面积达2平方 热头条
- 一周工作总结范文10篇(2022)
- 2023成都仙人掌音乐节4月30日场都有谁?_全球热讯
- 快播:EDA与数字系统设计第2版
- 详细的体育教师年度工作总结七篇
- 中美货物贸易创新高 “脱钩论”不得人心
- 焦点热讯:莫西干发型剪发视频_莫西干发型怎么剪
- 原材料价格高位运行 需求市场复苏是关键 环球新资讯
- 环球播报:英语初一上册知识点归纳
- 苹果手机怎么同时登陆两个微信不被发现隐藏功能-世界讯息
- 媳妇的全盛时代演员表_媳妇的全盛时代演员表
- 旅游英语作文
- Im童画 全球速讯
- 中国救援队赴土耳其实施国际救援|焦点
- 简单又好看的消防安全手抄报内容|快报
广告
- 土耳其地震已致500余人遇难 暂无中国公民伤亡 天天速看
- 全球微头条丨新乡化纤(000949.SZ)回购完毕 耗资1.51亿元回购公司2.96%股份
- 上海点星科技有限公司_当前看点
- 苏武牧羊
- 停水公告丨忻州城区新建路(光明街至健康街路段)两侧用户停水
- 马斯克:提供“好内容”的机器人可免费使用 Twitter 的 API_全球微头条
- ref
- 不为圣贤便为禽兽|速读
- 来复枪
- 今日热文:世界近代史人物传
- 环球热文:元宵节,四川天府新区闹腾了!
- 规范运作方面存在问题,立昂技术被新疆证监局要求责令改正
- 六福内地铂金多少钱一克(2023年02月05日) 环球今热点
- 东部新城门户区地块
- 身体结构拼图_身体结构示意图
- 环球动态:俄军方称打击多地乌军目标 乌军方称打击俄军人员和装备
- 黄毓民 全球新要闻
- 晋城白马寺
- 中国古代交通/中国读本
- 中国当代先锋艺术家随笔选|焦点速读