支持在AsParallel
(.NET Standard 2.1)上使用IAsyncEnumerable<T>
的任何官方或稳定的第三方库?
我不想使用异步方法,IAsyncEnumerable<T>
或其他方法将IEnumerable<Task<T>>
包装到TaskCompletionSource
,因为额外的费用。
将并行和异步结合起来没有多大意义。并行的目的是同时使用多个处理器/核,而异步的目的是根本不使用任何CPU资源。
AsParallel
(PLINQ)与IEnumerable
一起使用,如果枚举IEnumerable
占用大量CPU。换句话说,当必须在一个MoveNext
调用与下一个MoveNext
调用之间执行许多CPU指令时。对于IAsyncEnumerable
,延迟(通常)不是由MoveNextAsync
方法本身的调用引起的,而是由等待返回的MoveNextAsync
引起的。等待一个可等待的对象消耗零的CPU资源。您无法控制何时完成。以ValueTask
为例。它会在一秒钟后不久完成,除非您找到某种方式弯曲Task.Delay(1000)
的方法,否则您不能强迫它在半秒钟内完成。 😃