繁体   English   中英

纤维使用案例

[英]Fibers use cases

我正在阅读很多关于Fibers ,或绿色线程 ,或者我们可以给用户线程的任何其他名称。 我开始阅读文档和教程(这些是C ++链接,但我不需要特定的语言):

但是,似乎我无法掌握纤维的基本要素。 我知道光纤是一种合作多任务的方式,但据我发现,在实际情况下线程和光纤之间相互作用的文档很少。

什么是纤维的实际用例

例如,每个doc实际上都使用异步I / O作为示例,但是如果我没有I / O绑定问题怎么办? 例如,如果我的问题是在一个巨大的文件中计算单词怎么办? 在这里,我只是在线程之间拆分文件,光纤可以帮助吗? 我认为CPU绑定计算(如数值问题(例如矩阵/向量运算))不适合光纤,但同样,我可能完全错了。

如果我的问题是在一个巨大的文件中计算单词怎么办? ......,纤维能以某种方式帮助吗?

没有。

每个doc实际上都使用异步I / O作为示例

异步I / O是当多CPU系统尚未从实验室中逃脱时线程原本要解决问题。 线程是构建程序的另一种方法,该程序必须等待来自几个不同的非同步源的输入,并且必须及时响应这些输入。

根据它们的实现方式,当时的线程可以是从“大致相同”到“与我们今天所谓的”绿色线程“或”光纤“完全相同”的任何规模。

当多CPU系统进入市场时,线程被视为利用并行处理功能的一种自然而明显的方式。

与OS线程相比,光纤在创建和上下文切换方面的开销更低。 因此从理论上讲,如果你有一个锁定阻塞很多的解决方案,你可能会看到光纤的性能提升,因为光纤运行的OS线程将使用更多的分配运行时。 这是因为当光纤阻塞光纤互斥锁/锁时,底层OS线程将调用光纤调度程序,该光纤调度程序将运行不同的光纤,所有这些都不需要进行OS线程上下文切换。 这是M:N线程模型背后的基本思想。

另一种情况是,如果您需要创建和销毁频率很高或大量的线程。 因为光纤的创建速度更快,并且通常比OS线程更轻,所以你可以使用更大的数量,并且可以实现更细粒度的并行性(理论上)。

一个实际应用是使用actor模型进行基于大代理的模拟。 对于光纤,每个代理/演员都可以在自己的光纤上运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM