首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >纤维、协同线和绿色线程之间是否有区别?如果是这样,那又是什么呢?

纤维、协同线和绿色线程之间是否有区别?如果是这样,那又是什么呢?
EN

Software Engineering用户
提问于 2014-08-22 14:59:09
回答 1查看 21.2K关注 0票数 78

今天我在互联网上读了几篇关于纤维、协同线和绿色线程的文章,这些概念似乎有很多共同之处,但有一些细微的差异,特别是当我们谈论纤维和协同线时。

是否有一个简洁、正确的总结,说明它们之间的不同之处?

更新:我发现N4024 C++草案区分协同线和纤维文档特别擅长区分纤维和协同线。

EN

回答 1

Software Engineering用户

回答已采纳

发布于 2014-08-22 15:12:30

纤维是一个轻量级线程,它使用协作多任务处理而不是先发制人多任务处理。运行中的光纤必须显式地“屈服”以允许另一个光纤运行,这使得它们的实现比内核或用户线程容易得多。

柯鲁丁是一个组件,它泛化子例程以允许多个入口点在特定位置挂起和恢复执行。与子例程不同的是,协同线可以通过调用其他协同线来退出,这些协同线稍后可能会返回到原始协同线中调用它们的位置。

绿色螺纹是由虚拟机(VM)调度的线程,而不是由底层操作系统自行调度的线程。绿色线程模拟多线程环境,而不依赖任何本机OS功能,它们在用户空间而不是内核空间中进行管理,使它们能够在没有本机线程支持的环境中工作。

光纤和绿色线程都依赖于单独的调度程序来选择下一个光纤或线程,但是光纤必须明确地将控制(产量)让给它的调度程序。绿色线程将一直运行,直到其调度程序中断(“抢占”)。

纤维和协同作用都涉及“屈服”,其中纤维/协同作用决定何时放弃控制--这是协同多任务处理。纤维总是屈服于它的调度器,而协同线决定着它该向谁屈服。

协同服务可以用于实现光纤,总是屈服于调度器协同。光纤可以通过允许每根光纤与调度器通信来实现协同。当光纤产生时,哪个光纤应该运行。

票数 127
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/254140

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档