【发布时间】:2020-05-08 07:55:00
【问题描述】:
我正在尝试了解 async 和 await 在 C# 中的工作原理。
考虑下面的两个 sn-ps:
var appIdTask = GetAppIdAsync();
var clientSecretTask = GetClientSecretAsync();
var appId = await appIdTask;
var clientSecret = await clientSecretTask;
Execute(appId, clientSecret);
和
var appId = await GetAppIdAsync();
var clientSecret = await GetClientSecretAsync();
Execute(appId, clientSecret);
这两个 sn-ps 有不同的含义。对吗?
第一个将并行进行 Get 调用,而第二个将串行调用?
据我了解,第一次调用的 await 关键字会阻止第二次调用的执行。
【问题讨论】:
-
学习时,使用更清晰的术语可能会有所帮助。
await不会“阻止”执行,但会“暂停”其方法。我更喜欢在第一个块中使用术语“并发”(一次不止一件事情)而不是“并行”(使用多线程的更具体的并发形式)。
标签: c# asynchronous async-await