目前,我有大量 C# 计算(方法调用)驻留在将按顺序运行的队列中。每个计算都将使用一些高延迟服务(网络、磁盘......)。
我打算使用 Mono 协程来允许计算队列中的下一个计算继续,而前一个计算正在等待高延迟服务返回。但是,我更喜欢不依赖 Mono 协程。
是否有可以在纯 C# 中实现的设计模式,使我能够在等待高延迟服务返回时处理额外的计算?
谢谢
更新:
我需要执行大量 (>10000) 任务,每个任务都将使用一些高延迟服务。在 Windows 上,您无法创建那么多线程。
更新:
基本上,我需要一个设计模式来模拟 Stackless Python ( http://www.stackless.com/ )中 tasklet 的优点(如下)
- 大量的任务
- 如果一个任务阻塞了队列中的下一个任务执行
- 不浪费 CPU 周期
- 任务之间的最小开销切换