协程这么好,它能完全代替线程么?
好多问题呀,开始回答或者提问前,其实可以看看问题本身是不是有问题,像黄执中一样。
------
(资料图)
这个问题首先前提就有问题,谁说协程那么好的?任何技术肯定都有自己的适用场景,这种通用层面的技术则更是了。
协程本质上就是由用户代码主动在某个时间点出让 CPU,可以在任何一行出让,当然语言层或框架层的协程一般会在原本是阻塞函数的调用内部,让出 CPU 资源,不阻塞当前线程。
当然像 go 这种协程做的特别牛逼的,牛逼到它自己都不想承认自己是协程的语言,就另说了。
所以协程一般适用于 IO 密集型的高并发场景。
你要说就完全 CPU 密集型计算,那还不如开你 CPU 核数那么多线程呢,开了协程反而不能并行了,还多了协程间切换的损耗。
所以协程那么好,这句话就可以否了,同时也顺便拿出了一个场景,说明用协程替换线程是负优化的,自然协程也不能完全替换线程。
------
再有,刚刚是站在应用程序角度考虑,要分场景看是使用协程还是线程。再从操作系统层面考虑,协程就根本无法替代线程了。
你想,协程需要自己主动出让 CPU 资源,那要是操作系统使用协程来运行应用程序,那万一应用程序自己一直不出让 CPU,也不调用能产生阻塞操作进而间接出让 CPU 的代码,那不就坏事了。
再有,协程本身的优势在于切换成本小,本质是因为栈小,而且也不需要切换页表。
那要是操作系统真的拿协程来跑多应用程序,这些优势也就不复存在了,而且如果协程实现在了内核态,本身从用户态陷入内核态的切换也少不了。
所以本来协程有的优势,在这里全没了,还极大增加了不公平性。
------
最后,这俩事情本身就不好讨论替换这一说,因为他们本质都不一样。
协程说白了就是一段串行的指令流,只不过中间哪个地方往哪跳的逻辑,被封装在了 "协程" 这个概念里而已。
再者,协程本身也是要跑在线程中的,需要有载体,他们二者本身就是相辅相成的关系,何来替代呢,更别说完全替代了。
有时候,了解清楚一项技术的本质,就能更好看清这些问题的荒诞了。
今天阳了躺在床上实在无聊,就挑了个知乎上的问题回答了一下,看好多回答都没说在点子上,就码了这些字,感兴趣的同学可以点开阅读原文看看。
讲解百科 利润分配为什么增加记在借方
利润分配增加记在借方原因如下:利润分配科目属于权益类科目,而权益类科目的贷方核算增加数,借方核算减少数。利润分配是借方记减少,贷方
2022-12-18科普知识 出口货物的发票应该如何开
出口货物发票开具方法如下:1、商业发票,是自制发票,直接打印在A4纸上,每个出口企业都有自己的发票格式,商业发票包含商品名称、数量、单
2022-12-18知识库 居委会职责
1、在政府有关部门指导下,组织社区成员进行自治管理,搞好社区的卫生物业,计生,流动人口和治安管理,完成社区成员代表大会,社区议事委
2022-12-18知识大全 七阿姨到底是什么人
七阿姨是属于抖音上面的一个红人,根据资料显示七阿姨就是娱乐圈内的人,她的爸爸是一家娱乐公司的老板,所以因为爸爸的关系能有很多机会见
2022-12-18知识领域 怎么学习炒股
1、首先要知道自己的策略到底是在短线、中线、长线中,自己是哪一种,只有这样你才可以集中在是看公司、趋势还是主力。不同的主线所采取的
2022-12-18知识探索 微信朋友圈怎么只发文字
1、步骤:打开微信点击【发现】->点击【朋友圈】->按住右上角的【相机图标】1秒左右就可以进入发纯文字界面,然后输入发布的文字信息点击发
2022-12-18探索百科 推荐几部一点都不虐的总裁甜文
1、《早安,检察官娇妻》,作者:月七儿。2、《杉杉来吃》,作者:顾漫。3、《霸宠甜甜妻》,作者:雪篱笆。4、《首领霸爱:痴恋灰姑娘》,
2022-12-18百科大全 什么是高等职业学院
高等职业技术学院是根椐教育部相关规定,从上世纪末起非师范、非医学、非公安类专科层次全日制普通高等学校逐步规范校名为"职业技术学院",
2022-12-18百科全书 广州哪有宠物市场我想买只宠物狗
1、清平市场 :如果在广州火车站,可以乘坐开往文化公园、南方大厦方向的公交车,在文化公园或南方大厦下车,然后步行5分钟即可到达。 如
2022-12-18知识智库 海参怎么发最好
1、把购买回来的干海参,先浸泡,后煮制是发海参的最佳方法。发海参是需要准备不带油的不锈钢锅或者陶瓷锅,把干海参放进去,加入清水浸泡3
2022-12-18X 关闭
X 关闭