我没有用它,但我对这个问题很感兴趣.以下是使用循环调度程序在C#中执行协同程序的一个很好的实现:http://www.bluebytesoftware.com/blog/PermaLink.aspx? guid = 71235c5a-373-4bab-bdb0-334ab439afaf
顺便说一句,引用维基百科,"纤维描述与协同程序基本相同的概念".据我所知,C#中与协程(或光纤)最接近的是迭代器.实际上,它们非常接近协同程序.Lippert发布了几个关于迭代器的消息.希望它们都不是出于您需要的目的而出现的严重问题.
小智 7
我使用了基于产量的"协同程序",我不得不说它们是一个痛苦的屁股.当然,问题是,无论你想在哪里使用它们,你都不得不使用yield语法.不仅如此,除非你链接产量(父母产生孩子的产量),你只能将你的协同程序嵌套一层.这完全破坏了协程的一个主要好处(全栈保存/恢复).
我在C#中实现了一个基于光纤的协程系统,它运行得非常好直到我遇到异常.不幸的是,.Net运行时在OS线程中存储了一堆内部异常内容,这意味着使用OS光纤(和p/invoke)模拟多个线程只是不起作用,除非你永远不会有异常.
| 归档时间: |
|
| 查看次数: |
4120 次 |
| 最近记录: |