3

如果您决定通过将一些 CPU 密集型代码放入任务中并在线程池中运行来从 UI 线程中卸载一些 CPU 密集型代码,那么该代码本身是否会从使用“await”关键字中受益?

答案似乎是“不”..

我的意思是,在 UI 线程中等待任务的主要原因之一是释放 UI 线程以执行它之前所做的事情。如果您在线程池上运行时作为任务等待,那么您要释放该线程来做什么?

我错过了一些非常明显的东西吗?

4

1 回答 1

3

如果您决定通过将一些 CPU 密集型代码放入任务中并在线程池中运行来从 UI 线程中卸载一些 CPU 密集型代码,那么该代码本身是否会从使用“await”关键字中受益?

用于 CPU 密集型任务?也许不吧。

但这不是在线程池线程中运行代码的唯一原因。

考虑一个 Web 服务器 - 所有请求都将在线程池线程中处理......并且通过await在处理这些请求时使用(例如,在等待数据库或其他 Web 服务响应时),您可以在很少的线程上处理数百万个请求。

此外,即使在丰富的 GUI 场景中,您可能希望将一些长时间运行的任务放到线程池线程中,但仍会从该线程启动多个异步请求。async/await 鼓励异步操作组合的方式使得以异步方式编写代码完全合理,无论它碰巧在哪个线程上运行。

于 2012-08-03T20:52:34.660 回答