如果您决定通过将一些 CPU 密集型代码放入任务中并在线程池中运行来从 UI 线程中卸载一些 CPU 密集型代码,那么该代码本身是否会从使用“await”关键字中受益?
答案似乎是“不”..
我的意思是,在 UI 线程中等待任务的主要原因之一是释放 UI 线程以执行它之前所做的事情。如果您在线程池上运行时作为任务等待,那么您要释放该线程来做什么?
我错过了一些非常明显的东西吗?
如果您决定通过将一些 CPU 密集型代码放入任务中并在线程池中运行来从 UI 线程中卸载一些 CPU 密集型代码,那么该代码本身是否会从使用“await”关键字中受益?
答案似乎是“不”..
我的意思是,在 UI 线程中等待任务的主要原因之一是释放 UI 线程以执行它之前所做的事情。如果您在线程池上运行时作为任务等待,那么您要释放该线程来做什么?
我错过了一些非常明显的东西吗?
如果您决定通过将一些 CPU 密集型代码放入任务中并在线程池中运行来从 UI 线程中卸载一些 CPU 密集型代码,那么该代码本身是否会从使用“await”关键字中受益?
仅用于 CPU 密集型任务?也许不吧。
但这不是在线程池线程中运行代码的唯一原因。
考虑一个 Web 服务器 - 所有请求都将在线程池线程中处理......并且通过await
在处理这些请求时使用(例如,在等待数据库或其他 Web 服务响应时),您可以在很少的线程上处理数百万个请求。
此外,即使在丰富的 GUI 场景中,您可能希望将一些长时间运行的任务放到线程池线程中,但仍会从该线程启动多个异步请求。async/await 鼓励异步操作组合的方式使得以异步方式编写代码完全合理,无论它碰巧在哪个线程上运行。