相关疑难解决方法(0)

如果async-await没有创建任何其他线程,那么它如何使应用程序响应?

一次又一次,我看到它说使用async- await不会创建任何额外的线程.这没有任何意义,因为计算机一次看起来只做一件事以上的唯一方法就是

  • 实际上一次做多件事(并行执行,使用多个处理器)
  • 通过调度任务并在它们之间切换来模拟它(做一点A,一点点B,一点A,等等)

因此,如果async- await这些都没有,那么它如何使应用程序响应?如果只有一个线程,则调用任何方法意味着在执行任何其他操作之前等待方法完成,并且该方法中的方法必须在继续之前等待结果,依此类推.

.net c# multithreading asynchronous async-await

220
推荐指数
8
解决办法
5万
查看次数

AWS Lambda:异步 C# 处理程序

AWS 文件指出

在 C# 函数中使用 Async 和 AWS Lambda

如果您知道您的 Lambda 函数需要一个长时间运行的过程,例如将大文件上传到 Amazon S3 或从 DynamoDB 读取大量记录流,您可以利用 async/await 模式。通过使用此签名创建处理程序,Lambda 将同步执行该函数并在返回或超时之前等待最多 5 分钟执行完成。

我觉得很困惑 Lambda 会不会

同步执行函数,最多等待 5 分钟

当 Lambda 支持长达 15 分钟的处理时间时。这是否意味着如果我在处理程序上设置异步,我只能在 5 分钟内处理一个事件?

c# amazon-web-services aws-lambda

6
推荐指数
1
解决办法
2567
查看次数

执行等待异步操作时的 AWS Lambda 行为?

假设 APIGateway 触发一个等待 10 秒的函数(处理程序)

public async Task<APIGatewayProxyResponse> Get(APIGatewayProxyRequest request, ILambdaContext context){
     var x = await Wait10Async();
     return SomeAPIGatewayProxyResponse;
}
Run Code Online (Sandbox Code Playgroud)

Q1:await将控制流返回给函数处理程序本身时,这个容器(执行环境)会发生什么显然,Lambda 在返回 APIGateway 之前等待 Task 完成,但是在这 10 秒内,容器(或其他)是否接受并执行了更多Get功能?

问题背后的原因是 AWS Lambda 有 1000 个并发执行限制,它说每个执行都在单独的容器中运行,因此这让我质疑这种情况:

1 - APIGateway 接收 1000 个同时请求并启动 1000 个 Lambda 处理程序,这些处理程序在 10 秒后完成

在第一个请求之后(在它们完成之前)2 - 3 秒,另一个比方说 100 个请求来到 APIGateway。在这种情况下,所有 lambda 容器都已耗尽。

这是发生了什么还是await有解决这个问题的魔法?我知道如何不await阻塞经典视图应用程序中的循环。但是它在 Lambda 执行环境中的表现如何?

c# amazon-web-services .net-core aws-lambda aws-api-gateway

5
推荐指数
0
解决办法
888
查看次数