zoukankan      html  css  js  c++  java
  • 关于对 asp.net mvc 异步方法的理解

    private static async Task<TResult> XAsync()
      {
               
         test(); //X()同步方法0
            
         XXAsync();//"异步方法1"
    
         return await XXXAsync(); //XXAsync()异步方法2
      }

    1.c#程序运行会产生一个主线程,如果是同步方法运行,方法体的的所有方法,都会由主线程去完成,整个方法完成后才会释放主线程。

    如何理解主线程已完成呢?Asp.net Mvc 的机制就在这里,我们都知道,IIS里的线程池是有限的,每次的Client端请求,都会到线程池里取一个空闲的线程,如果主线程一直在”占用“线程池,

    很快线程池就会被利用完啦。此时我们平时说的”吞吐量“的高低就是与此息息相关!当线程池被请求完后,再次有新的Client端请求,要会等待线程池的释放。


    而mvc 就引用了控制器里异步方法的机制,原理就是让耗时的线程,直接返回,交给主线程,从而主线程会第一时间释放线程池的占用,而耗时的子线程完成时,将会在await标记从继续运行,
  • 相关阅读:
    laravel路由导出和参数加密
    laravel groupby 报错
    Laravel/Lumen 分组求和问题 where groupBy sum
    php swoft redis 发布和订阅
    Linq to Sql学习总结7
    Linq to Sql学习总结6
    Linq to Sql学习总结5
    Linq to Sql学习总结4
    Linq to Sql学习总结3
    Linq to Sql学习总结2
  • 原文地址:https://www.cnblogs.com/FlowLight/p/9041389.html
Copyright © 2011-2022 走看看