gpt4 book ai didi

C# 5 async/await 线程机制感觉不对?

转载 作者:可可西里 更新时间:2023-11-01 08:30:45 24 4
gpt4 key购买 nike

为什么调用线程要进入异步方法直到内部'await'?

调用异步方法后立即生成一个线程不是更干净吗?这样您就可以确定异步方法会立即返回。您不必担心在异步方法的早期阶段没有做任何昂贵的事情。

我倾向于知道一个方法是否会在“我的”线程上执行代码。不管堵不堵。该模型似乎开启了一系列介于两者之间的可能性。

设计师比我聪明得多,所以我确信这是有充分理由的,我只是想好好想想。

最佳答案

Isn't it cleaner to just spawn a thread as soon as an async method is called.

“异步”方法的全部意义在于避免生成新线程。

您混淆了异步和并发。异步方法不需要在另一个线程上运行才能异步。异步方法的要点是它们允许您将工作分解成需要以特定顺序运行的小块,但不一定不在同一线程上执行其他工作.

将线程想象成您可以雇用的 worker 。将异步方法视为在项目之间有停顿的待办事项列表。如果你的待办事项 list 上写着“去商店,买牛奶和鸡蛋,回家,做一个煎蛋”,那么异步的好处是,当有人在“买鸡蛋”步骤和“去”步骤之间调用你的手机时回家”一步,说“你能在回家的路上顺便去药房拿我的处方吗?”您可以在制作煎蛋卷之前接听电话并安排工作。使用非异步方法,您的电话会一直响,直到煎蛋完成,然后您才接听电话。 UI 会一直阻塞,直到您完成您正在做的事情。

你的想法是,为了保持 UI 线程的响应,当你得到待办事项列表时,你会雇人帮你跑到商店,这样你就可以自由地接听电话药店。 这是昂贵且不必要的。一切都可以通过异步在同一个线程上,因为长时间运行的任务具有内置点,UI 可以在这些点上中断并安排更多工作.

关于C# 5 async/await 线程机制感觉不对?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8854269/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com