IAsyncEnumerable上的并行Linq?

问题描述 投票:1回答:1

支持在AsParallel(.NET Standard 2.1)上使用IAsyncEnumerable<T>的任何官方或稳定的第三方库?

我不想使用异步方法,IAsyncEnumerable<T>或其他方法将IEnumerable<Task<T>>包装到TaskCompletionSource,因为额外的费用。

c# .net-core plinq iasyncenumerable .net-standard-2.1
1个回答
0
投票

将并行和异步结合起来没有多大意义。并行的目的是同时使用多个处理器/核,而异步的目的是根本不使用任何CPU资源。

AsParallelPLINQ)与IEnumerable一起使用,如果枚举IEnumerable占用大量CPU。换句话说,当必须在一个MoveNext调用与下一个MoveNext调用之间执行许多CPU指令时。对于IAsyncEnumerable,延迟(通常)不是由MoveNextAsync方法本身的调用引起的,而是由等待返回的MoveNextAsync引起的。等待一个可等待的对象消耗零的CPU资源。您无法控制何时完成。以ValueTask为例。它会在一秒钟后不久完成,除非您找到某种方式弯曲Task.Delay(1000)的方法,否则您不能强迫它在半秒钟内完成。 😃

© www.soinside.com 2019 - 2024. All rights reserved.