同步调用异步嵌套方法-异步会沿路径工作吗?

Rez.Net

我的库中有异步方法,并且顶级调用是在AWS Lambda函数的处理程序中同步进行的(出于某些原因,此处不再讨论)。我想知道是否有任何机会是异步的?还是因为第一个调用者是同步进行的,否则一切都会同步吗?

public void LambdaHandler(Input inp, ILambdaContext context)
{
    method1().GetAwaiter().GetResult();
}

private async Task method1()
{
    await method2();
    await method3();
}

private async Task method2()
{
    //do something
}

private async Task method3()
{
    //do something
}
马克·格雷韦尔

method2method3会做什么,他们总是这样做如果它们在TaskAPI之后是完全同步的,则它们将继续保持同步;如果它们是异步的,那么它们将继续是异步的。这里唯一的问题是:将LambdaHandler做什么,答案很简单:

  • 它将阻塞直到完成

如果它们已经同步完成,那就好了;如果不是,那么您将线程捆绑在sync-over-async块中。如果您的代码使用仅具有单个工作程序的同步上下文或任务计划程序(这并不罕见),则本身可能导致死锁,因为异步代码将需要执行任何后处理的线程将是坚持等待GetResult()因此,异步部分无法完成,GetResult()也无法完成。

您应该避免像瘟疫一样在异步上同步。有理由将其视为反模式。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

来自分类Java

使科特林异步调用同步

来自分类Dev

同步功能内的异步调用

来自分类Javascript

同步调用异步Javascript函数

来自分类Dev

错误异步调用异步方法

来自分类Dev

Swift中的嵌套异步调用

来自分类Dev

关于从异步方法同步调用受CPU约束的方法的困惑

来自分类Java

从一定同步调用者异步方法(Vert.x,JAVA)

来自分类Dev

即使使用ConfigureAwait(false),也会在WebAPI死锁中同步调用异步方法

来自分类Dev

在单元测试中同步调用异步方法是否不正确?

来自分类Dev

在同步或异步调用asp.net核心blazor方法之间进行选择

来自分类Dev

从异步方法调用同步方法

来自分类Dev

我如何防止CPU的“最大化”:异步调用多个工作进程并使用SemaphoreSlim进行限制的同步方法?

来自分类Dev

将同步代码包装为异步调用

来自分类Dev

RequireJS何时需要异步调用?什么时候同步?

来自分类Dev

访问异步调用的结果是否会使它同步?

来自分类Dev

记录异步调用的正确/常用方法

来自分类Dev

React在异步调用中调度方法

来自分类Dev

如何异步调用静态方法

来自分类Dev

以异步方式调用同步方法?

来自分类Dev

AddSingleton与异步调用?

来自分类Dev

Zerorpc异步调用

来自分类Java

Spring Async正在阻止并阻止嵌套的异步调用

来自分类Dev

具有顶级功能的嵌套异步调用正在等待

来自分类Dev

ComponentWillReceiveProps使用多个同步调度调用一次,但是使用异步调度多次调用吗?

来自分类Dev

从异步回调调用同步方法调用?

来自分类Dev

如何调用嵌套的异步方法

来自分类Dev

如何异步调用方法并等待API调用完成

来自分类Dev

如何使嵌套异步方法同步运行?

来自分类Dev

异步-同步-在一个python事件循环中异步调用

TOP 榜单

热门标签

归档