我想知道 async
-await
是否真的不应该用于“高 CPU”任务。我在演示文稿中看到了这一说法。
所以我猜这意味着类似
Task<int> calculateMillionthPrimeNumber = CalculateMillionthPrimeNumberAsync();
DoIndependentWork();
int p = await calculateMillionthPrimeNumber;
我的问题是可以以上是合理的,或者如果不是,是否还有其他一些使高 CPU 任务异步的示例?
最佳答案
I was wondering whether it's true that async-await should not be used for "high-CPU" tasks.
是的,这是真的。
My question is could the above be justified
我会说这是不合理的。在一般情况下,您应该避免使用 Task.Run
来实现具有异步签名的方法。 Don't expose asynchronous wrappers for synchronous methods .这是为了防止消费者混淆,尤其是在 ASP.NET 上。
但是,使用 Task.Run
来调用同步方法并没有错,例如,在 UI 应用程序中。这样,您可以使用多线程 (Task.Run
) 保持 UI 线程空闲,并使用 await
优雅地使用它:
var task = Task.Run(() => CalculateMillionthPrimeNumber());
DoIndependentWork();
var prime = await task;
关于c# - async 真的不应该用于高 CPU 任务吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41246685/