2

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

由于额外的成本,我不想用异步方法或其他东西包装IAsyncEnumerable<T>一个。IEnumerable<Task<T>>TaskCompletionSource

4

1 回答 1

2

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

在枚举CPU 密集型的情况下,AsParallel( PLINQ ) 与 s 一起使用。换句话说,当必须在一次调用和下一次调用之间执行多对多 CPU 指令时。对于s ,延迟(通常)不是由方法本身的调用引起的,而是由返回的等待引起的。等待一个可等待对象消耗零 CPU 资源。而且您无法控制它何时完成。以一个. 它会在一秒钟后完成,你不能强迫它在半秒钟内完成,除非你找到一种方法来弯曲时空IEnumerableIEnumerableMoveNextIAsyncEnumerableMoveNextAsyncValueTaskTask.Delay(1000)

于 2020-04-21T08:20:18.470 回答