探索 Async/Await 对即发即忘任务调度的影响
此分析检查了异步/等待的复杂性,特别是在“即发即弃”场景中。 随附的代码(此处未显示)说明了不同的方法如何影响任务调度和执行。
一劳永逸:简单的忽视
第一个示例 (#1) 展示了基本的即发即弃操作。 Callee
方法异步执行,调用者无需等待其结论。
等待完成
相反,第二个示例 (#2) 演示了等待 Callee
结果的传统方法。 调用者暂停执行,直到异步操作完成。
Task.Run 与异步调用:比较
示例 #3 和 #5 将通过 Callee
直接调用 Task.Run
与在委托中使用异步 lambda 进行比较。 虽然语法不同,但两者都在线程池线程上启动 Callee
,以“即发即忘”的方式操作。
异步 Lambda 和线程池线程
示例 #4 和 #6 使用带有异步 lambda 的 Task.Run
。 lambda 在线程池线程上并发运行。 然而,调用者等待 lambda 完成,确保后续操作在 Callee
完成之前不会开始。
以上是Async/Await 如何影响'即发即忘”场景中的任务调度?的详细内容。更多信息请关注PHP中文网其他相关文章!