【发布时间】:2012-06-03 19:19:41
【问题描述】:
如果您需要并行运行多个异步 I/O 任务,但需要确保同时运行的 I/O 进程不超过 X 个,该怎么办?而前后 I/O 处理任务不应该有这样的限制。
这是一个场景——假设有 1000 个任务;它们中的每一个都接受一个文本字符串作为输入参数;转换该文本(预 I/O 处理),然后将该转换后的文本写入文件。目标是使预处理逻辑利用 100% 的 CPU/内核和 I/O 部分任务以最大 10 度的并行度运行(一次最多同时打开 10 个用于写入文件)。
您能否提供一个示例代码如何使用 C# / .NET 4.5 进行操作?
http://blogs.msdn.com/b/csharpfaq/archive/2012/01/23/using-async-for-file-access-alan-berman.aspx
【问题讨论】:
-
Rx 2.0 可能非常适合这个(一次将第二阶段限制为 10 个),但我对它还不够熟悉,无法肯定地说。 :-/
-
这能回答你的问题吗? Nesting await in Parallel.ForEach
标签: c# asynchronous task-parallel-library async-ctp async-await