【问题标题】:How to use PLINQ for IO-bound tasks?如何将 PLINQ 用于 IO 绑定任务?
【发布时间】:2009-11-28 15:34:52
【问题描述】:

根据this question的回答,没有办法有效地使用LINQ进行IO绑定任务。有没有办法获得更好的控制,还是 LINQ 不适合此类任务?

【问题讨论】:

    标签: c# .net linq concurrency


    【解决方案1】:

    我不同意你的结论。在另一个问题中,Luke 表示:

    来自 MSDN 文档:“学位 并行度是最大数量 并发执行的任务 将用于处理查询”。 WithDegreeOfParallelism 只是一个提示 PLINQ 应该使用不超过 n 线程。

    Plinq 只决定为您的代码使用两个线程而不是十个线程这一事实并不意味着它不适合 IO 绑定任务。这意味着(很可能)两个线程最适合您的代码,而不是十个。

    【讨论】:

    • 但这并不是最优的。有时,我确实知道得更好,需要直接控制线程数,而不是依赖 PLINQ 中的一些启发式方法。
    • 我怀疑您用于测试的代码确实可以在两个线程中实现最佳性能,而且如果您的测试代码中存在真正的 I/O 阻塞,PLinq 会打开更多线程。
    • 嗯,我低估了启发式方法。它会在几次完整的迭代后更改线程数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-05
    • 1970-01-01
    相关资源
    最近更新 更多