Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core NET核心,当涉及异步时,它如何处理并发请求?_Asp.net Core - Fatal编程技术网

Asp.net core NET核心,当涉及异步时,它如何处理并发请求?

Asp.net core NET核心,当涉及异步时,它如何处理并发请求?,asp.net-core,Asp.net Core,知道ASP.net核心在涉及异步时如何处理并发请求吗。从下面的日志中可以看到,请求完成时间似乎是按顺序的,而不是并行或并发的?我可能理解异步错误,希望有人能解释为什么下面的请求完成时间是按顺序的,而不是相同的时间?我希望至少每个请求都能在几乎相同的时间内完成 Connection id "0HL9BC18TNP25" started. Connection id "0HL9BC18TNP26" started. Connection id "0HL9BC18TNP27" started. Con

知道ASP.net核心在涉及异步时如何处理并发请求吗。从下面的日志中可以看到,请求完成时间似乎是按顺序的,而不是并行或并发的?我可能理解异步错误,希望有人能解释为什么下面的请求完成时间是按顺序的,而不是相同的时间?我希望至少每个请求都能在几乎相同的时间内完成

Connection id "0HL9BC18TNP25" started.
Connection id "0HL9BC18TNP26" started.
Connection id "0HL9BC18TNP27" started.
Connection id "0HL9BC18TNP28" started.
Connection id "0HL9BC18TNP29" started.
Connection id "0HL9BC18TNP2A" started.
Connection id "0HL9BC18TNP2B" started.
Connection id "0HL9BC18TNP2C" started.
Connection id "0HL9BC18TNP2D" started.
Connection id "0HL9BC18TNP2E" started.
Connection id "0HL9BC18TNP2C" completed keep alive response.
Request finished in 45.2835ms 200 application/json; charset=utf-8
Connection id "0HL9BC18TNP2C" received FIN.
Connection id "0HL9BC18TNP2C" disconnecting.
Connection id "0HL9BC18TNP2C" sending FIN.
Connection id "0HL9BC18TNP2C" sent FIN with status "0".
Connection id "0HL9BC18TNP2C" stopped.
Connection id "0HL9BC18TNP2D" completed keep alive response.
Request finished in 175.3974ms 200 application/json; charset=utf-8
Connection id "0HL9BC18TNP2D" received FIN.
Connection id "0HL9BC18TNP2D" disconnecting.
Connection id "0HL9BC18TNP2D" sending FIN.
Connection id "0HL9BC18TNP2D" sent FIN with status "0".
Connection id "0HL9BC18TNP2D" stopped.
Connection id "0HL9BC18TNP27" received FIN.
Connection id "0HL9BC18TNP27" completed keep alive response.
Request finished in 171.6836ms 200 application/json; charset=utf-8
Connection id "0HL9BC18TNP27" disconnecting.
Connection id "0HL9BC18TNP27" sending FIN.
Connection id "0HL9BC18TNP27" sent FIN with status "0".
Connection id "0HL9BC18TNP27" stopped.
Connection id "0HL9BC18TNP26" completed keep alive response.
Connection id "0HL9BC18TNP26" received FIN.
Request finished in 179.5263ms 200 application/json; charset=utf-8
Connection id "0HL9BC18TNP26" disconnecting.
Connection id "0HL9BC18TNP29" completed keep alive response.
Request finished in 189.1427ms 200 application/json; charset=utf-8
Connection id "0HL9BC18TNP2B" completed keep alive response.
Request finished in 179.8384ms 200 application/json; charset=utf-8
Connection id "0HL9BC18TNP26" sending FIN.
Connection id "0HL9BC18TNP2E" completed keep alive response.
Connection id "0HL9BC18TNP2E" received FIN.
Request finished in 187.7259ms 200 application/json; charset=utf-8
Connection id "0HL9BC18TNP2B" received FIN.
Connection id "0HL9BC18TNP29" received FIN.
Connection id "0HL9BC18TNP2B" disconnecting.
Connection id "0HL9BC18TNP2E" disconnecting.
Connection id "0HL9BC18TNP29" disconnecting.
Connection id "0HL9BC18TNP26" sent FIN with status "0".
Connection id "0HL9BC18TNP26" stopped.
Connection id "0HL9BC18TNP2B" sending FIN.
Connection id "0HL9BC18TNP2E" sending FIN.
Connection id "0HL9BC18TNP29" sending FIN.
Connection id "0HL9BC18TNP2E" sent FIN with status "0".
Connection id "0HL9BC18TNP2E" stopped.
Connection id "0HL9BC18TNP2B" sent FIN with status "0".
Connection id "0HL9BC18TNP2B" stopped.
Connection id "0HL9BC18TNP29" sent FIN with status "0".
Connection id "0HL9BC18TNP29" stopped.
Connection id "0HL9BC18TNP28" completed keep alive response.
Request finished in 190.027ms 200 application/json; charset=utf-8
Connection id "0HL9BC18TNP28" received FIN.
Connection id "0HL9BC18TNP28" disconnecting.
Connection id "0HL9BC18TNP28" sending FIN.
Connection id "0HL9BC18TNP28" sent FIN with status "0".
Connection id "0HL9BC18TNP28" stopped.
Connection id "0HL9BC18TNP2A" received FIN.
Connection id "0HL9BC18TNP2A" completed keep alive response.
Request finished in 209.3495ms 200 application/json; charset=utf-8
Connection id "0HL9BC18TNP2A" disconnecting.
Connection id "0HL9BC18TNP2A" sending FIN.
Connection id "0HL9BC18TNP2A" sent FIN with status "0".
Connection id "0HL9BC18TNP2A" stopped.
Connection id "0HL9BC18TNP25" completed keep alive response.
Request finished in 223.5798ms 200 application/json; charset=utf-8
Connection id "0HL9BC18TNP25" received FIN.
Connection id "0HL9BC18TNP25" disconnecting.
Connection id "0HL9BC18TNP25" sending FIN.
Connection id "0HL9BC18TNP25" sent FIN with status "0".
Connection id "0HL9BC18TNP25" stopped.

异步!=平行的Async只做一件事,它允许线程在空闲时返回到池中,因此if可以做其他工作,而不是闲置。时期仅此而已。当您等待一个异步任务时,您的代码不会神奇地继续并继续处理。它“等待”(因此
等待
)工作完成

如果您确实希望同时运行一组异步任务,则可以使用
Task。whalll

var tasks = new Task[]
{
    DoFirstAsync(),
    DoSecondAsync(),
    DoThirdAsync()
};
await Task.WhenAll(tasks);

这实际上只是创建了一个
任务
,它等待所有其他
任务
完成,因此您可以
等待
这个任务。

您可以添加一些正在运行的代码吗?请看一下这个答案,但是ASP.NET核心web api如何处理并发请求?我希望如果两个请求命中代码,那么应该有两个单独的线程同时执行?我可能理解错了。从解释上看,听起来好像其他请求必须等待前一个请求完成才能继续?哦。你说的是同时处理请求。这实际上与异步没有任何关系。一个web服务器通常有大约1000个线程的线程池,因此可以同时处理多达1000个请求。然而,重要的是,IIS Express是单线程的,您可能在这里进行测试。这意味着它一次只能处理一个请求,总是这样。它是用于开发的,所以不需要多线程。这就是问题所在,我看不出它们是在不同的线程中执行的?正确地说,请求完成时间应该接近确定的时间,而不应该累积。看,他们正在等待下一个在轮到他们之前完成。再说一次,你在哪里运行这个。如果是在开发中,它们将始终被串行处理,因为您只有一个线程可以使用。如果是完整的IIS,它们应该并行运行,除非您缺少线程。我正在docker容器中运行web api(nginx作为Recesse proxy+kestrel),主机使用AWS m4.large实例。