天天关注:协程这么好,它能完全代替线程么?
好多问题呀,开始回答或者提问前,其实可以看看问题本身是不是有问题,像黄执中一样。
【资料图】
------
这个问题首先前提就有问题,谁说协程那么好的?任何技术肯定都有自己的适用场景,这种通用层面的技术则更是了。
协程本质上就是由用户代码主动在某个时间点出让 CPU,可以在任何一行出让,当然语言层或框架层的协程一般会在原本是阻塞函数的调用内部,让出 CPU 资源,不阻塞当前线程。
当然像 go 这种协程做的特别牛逼的,牛逼到它自己都不想承认自己是协程的语言,就另说了。
所以协程一般适用于 IO 密集型的高并发场景。
你要说就完全 CPU 密集型计算,那还不如开你 CPU 核数那么多线程呢,开了协程反而不能并行了,还多了协程间切换的损耗。
所以协程那么好,这句话就可以否了,同时也顺便拿出了一个场景,说明用协程替换线程是负优化的,自然协程也不能完全替换线程。
------
再有,刚刚是站在应用程序角度考虑,要分场景看是使用协程还是线程。再从操作系统层面考虑,协程就根本无法替代线程了。
你想,协程需要自己主动出让 CPU 资源,那要是操作系统使用协程来运行应用程序,那万一应用程序自己一直不出让 CPU,也不调用能产生阻塞操作进而间接出让 CPU 的代码,那不就坏事了。
再有,协程本身的优势在于切换成本小,本质是因为栈小,而且也不需要切换页表。
那要是操作系统真的拿协程来跑多应用程序,这些优势也就不复存在了,而且如果协程实现在了内核态,本身从用户态陷入内核态的切换也少不了。
所以本来协程有的优势,在这里全没了,还极大增加了不公平性。
------
最后,这俩事情本身就不好讨论替换这一说,因为他们本质都不一样。
协程说白了就是一段串行的指令流,只不过中间哪个地方往哪跳的逻辑,被封装在了 "协程" 这个概念里而已。
再者,协程本身也是要跑在线程中的,需要有载体,他们二者本身就是相辅相成的关系,何来替代呢,更别说完全替代了。
有时候,了解清楚一项技术的本质,就能更好看清这些问题的荒诞了。
今天阳了躺在床上实在无聊,就挑了个知乎上的问题回答了一下,看好多回答都没说在点子上,就码了这些字,感兴趣的同学可以点开阅读原文看看。
关键词: 应用程序
相关新闻
- 天天关注:协程这么好,它能完全代替线程么?
- 今日播报!车e贷逾期45年会上征信系统吗
- 当前要闻:e点贷逾期九天怎么办
- 世界简讯:涉嫌性骚扰 2022年诺贝尔经济学奖得主面临调查
- 世界速看:景业名邦集团(02231)就尚未偿还的2023年到期7.5厘优先票据展开交换要约
- 当前头条:巫溪县十级工伤赔偿期限多久
- 全球最资讯丨新易贷逾期多久上征信
- 实时:知乎上说,美国流浪汉都是因为离婚破产,才睡大街的?
- 世界快讯:东微半导(688261)12月16日主力资金净卖出382.00万元
- 世界关注:中诚信国际董事长闫衍:建议五方面举措弥补中小企业债券融资短板
- 当前聚焦:一文了解开关电源任性升降压
- 聚焦:房产继承诉讼和解后该怎么办?
- 【世界播资讯】苹果6手机 「苹果10手机」
- 每日关注!家联科技获5家机构调研:公司在来宾市工业园区新购地块用于投资建设年产10万吨甘蔗渣可降解环保材料制品项目的新增产能(附调研问答)
- 天天快看点丨大庆市律师费一般怎样算
- 天天关注:广脉科技(838924)12月14日散户资金净卖出7.71万元
- 世界球精选!定增市场回暖 机构争抢优质项目
- 全球观速讯丨伟星股份(002003.SZ):参股子公司伟星光学已进入首次公开发行股票并上市的辅导阶段
- 天天播报:华鑫股份董秘回复:上述股权转让事项目前正在办理相关后续手续,公司将于相关手续完成后发布公告
- 环球今日讯!网贷逾期13000不还会有什么后果
- 环球观热点:提升防空防灾能力应坚持把军民融合作为人防建设的必由之路
- 【全球播资讯】锡业股份董秘回复:感谢投资者对公司的关注
- 天天要闻:英联股份: 关于控股股东、实际控制人之一致行动人部分股份质押的公告
- 【环球速看料】大地电气(870436)12月8日主力资金净买入35.33万元
