C# 当一个请求处于I/O绑定工作状态时,多个web请求是否可以使用同一线程?

C# 当一个请求处于I/O绑定工作状态时,多个web请求是否可以使用同一线程?,c#,.net,asynchronous,.net-core,async-await,C#,.net,Asynchronous,.net Core,Async Await,在.NETCore中,假设我们有一个WebAPI端点,它触发了一个async/await操作,因为还有一些I/O工作要做 因为我们使用的是async/await,所以处理第一个请求的线程在I/O工作开始时被释放 如果I/O工作需要一些时间,所有其他线程都很忙(线程池已满),并且出现新请求,该怎么办?正常情况下等待I/O操作的释放线程是否可以为新请求拾取工作 因为我们使用的是async/await,所以处理第一个请求的线程在I/O工作开始时被释放 对。一旦顶级处理程序执行等待,该请求线程将返回到线

在.NETCore中,假设我们有一个WebAPI端点,它触发了一个
async/await
操作,因为还有一些I/O工作要做

因为我们使用的是
async/await
,所以处理第一个请求的线程在I/O工作开始时被释放

如果I/O工作需要一些时间,所有其他线程都很忙(线程池已满),并且出现新请求,该怎么办?正常情况下等待I/O操作的释放线程是否可以为新请求拾取工作

因为我们使用的是async/await,所以处理第一个请求的线程在I/O工作开始时被释放

对。一旦顶级处理程序执行
等待
,该请求线程将返回到线程池

如果I/O工作需要一些时间,所有其他线程都很忙(线程池已满),并且出现新请求,该怎么办

如果所有的请求线程都很忙,那么该请求将位于队列中,等待空闲线程

正常情况下等待I/O操作的释放线程是否可以为新请求拾取工作

不清楚您所说的“通常等待I/O操作的线程”是什么意思。I/O操作是异步的,因此请求线程已返回到线程池,并且

你可能会觉得有用;详细信息不适用于ASP.NET核心,但一般概念适用(同步与异步请求、线程“执行”I/O以及线程池与异步)

因为我们使用的是async/await,所以处理第一个请求的线程在I/O工作开始时被释放

对。一旦顶级处理程序执行
等待
,该请求线程将返回到线程池

如果I/O工作需要一些时间,所有其他线程都很忙(线程池已满),并且出现新请求,该怎么办

如果所有的请求线程都很忙,那么该请求将位于队列中,等待空闲线程

正常情况下等待I/O操作的释放线程是否可以为新请求拾取工作

不清楚您所说的“通常等待I/O操作的线程”是什么意思。I/O操作是异步的,因此请求线程已返回到线程池,并且


你可能会觉得有用;详细信息不适用于ASP.NET核心,但一般概念适用(同步与异步请求、线程“执行”I/O以及线程池与异步)。

据我所知,这正是异步的要点:释放本来会等待的线程,以便它们可以用于处理其他请求。另请参见我的理解,这正是异步的要点:释放本来会等待的线程,以便它们可以用于处理其他请求。另请参见“不清楚您所说的“通常等待I/O操作的线程”是什么意思。”“我认为OP意味着在预异步世界中,线程将被任何同步IO操作阻塞,因此无法执行其他操作。”不清楚您所说的“通常等待I/O操作的线程”是什么意思“我认为OP意味着在一个预异步世界中,线程将被任何同步IO操作阻塞,因此无法执行其他操作。