我读了很多关于纤维,或绿色线程,或者我们可以给用户态线程起的任何其他名称的文章。我开始阅读文档和教程(这些是 C++ 链接,但我不需要特定的语言):
- Distinguishing coroutines and fibers
- Producer/Consumer using Boost.Fibers
- Boost.Fiber documentation
- 还有很多很多其他
但是,我似乎无法掌握纤维的要领。我知道纤程是一种协作多任务的方式,但据我发现,有关实际情况下线程和纤程之间相互作用的文档很少。
What are some practical use cases of fibers?
例如,每个文档实际上都使用异步 I/O 作为示例,但如果我没有 I/O 限制问题怎么办?例如,如果我的问题是计算一个大文件中的单词数怎么办?在这里,我只是在线程之间分割文件,纤维可以以某种方式提供帮助吗?我认为 CPU 密集型计算(例如数值问题(例如矩阵/vector 运算))不适合光纤,但同样,我可能完全错了。
最佳答案
what if my problem is counting words in a huge file? ..., can fibers help somehow?
没有。
every doc actually uses async I/O as an example
异步 I/O 是线程最初要解决的问题,当时多 CPU 系统还没有走出实验室。线程是构建程序的另一种方式,该程序必须等待来自多个不同的非同步源的输入,并且必须及时响应这些输入。
根据它们的实现方式,当时的线程可能处于从“大部分相同”到“完全相同”的范围内,我们今天称之为“绿色线程”或“纤维”。
当多 CPU 系统进入市场时,线程被视为利用并行处理功能的一种自然而明显的方式。
关于c++ - 纤维用例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50096169/