.net中是否有光纤api?

dka*_*man 13 .net c# fiber

出于好奇心,我一直在寻找一套C#/ .net类来支持光纤/协同程序(win32版本)并且没有任何运气.

有人知道这样的野兽吗?

Ree*_*sey 11

不.框架中没有Fiber API.我怀疑这是因为使用它们没有什么好处 - 甚至光纤API页面(本机)提到:

通常,与精心设计的多线程应用相比,光纤不具有优势.

.NET使得开发"设计良好"的多线程应用程序变得更加容易,我怀疑它对光纤API几乎没有用处.

  • 实际上,纤维可用于实现相对便宜的协同程序(参见:http://en.wikipedia.org/wiki/Coroutine和http://en.wikipedia.org/wiki/Fiber_%28computer_science%29).直到c#本身支持协程作为语言功能,光纤可能是下一个最简单的方法. (5认同)
  • @ReedCopsey的问题是那些是无堆栈的协同程序,而基于光纤的协同程序是堆栈的. (4认同)
  • @rightfold 与“无堆栈”协程相比,“堆栈”协程有哪些优势? (2认同)

LBu*_*kin 8

你见过这个吗:


2003年9月的MSDN杂志题目"通过包装非托管光纤API实现.NET的协同程序"

http://msdn.microsoft.com/en-us/magazine/cc164086.aspx

  • 请注意顶部的大红色警告:不要使用此. (14认同)
  • 该链接无效,只链接到一系列杂志问题. (2认同)

Hen*_*man 7

如果我没记错的话,.NET 2测试版中有一个,但它被删除了.Eric Lippert写了关于纤维和延续的文章,并说他们选择了最小的必要(链接).

有一些方法可以使用迭代器和yield来创建一个协程系统,请参阅此链接.而另一个由乔·达菲.