gpt4 book ai didi

c# - .NET Web 应用程序 native 使用多少个线程?

转载 作者:行者123 更新时间:2023-11-30 13:57:06 24 4
gpt4 key购买 nike

这个问题困扰了我一段时间。假设我没有使用任何明确形式的任务并行性(例如 Paralell.ForEach),当我将 Web 应用程序部署到 Windows Server 时, native 使用了多少线程?

换句话说,如果网络服务器有一个八核处理器,如果我没有明确告诉它使用更多核,应用程序是否只使用其中一个核?

我敢打赌我在这里错过了一些简单的东西,所以火上浇油——但我仍然想知道答案。谢谢。

最佳答案

首先,您必须考虑到 Web 服务器本质上是一个多线程系统,因为它必须能够同时响应多个请求(有多种方法可以在单线程中执行此操作环境,但效率不高,IIS 不支持)。如果两个用户同时访问网站,在大多数情况下,两个单独的线程会为每个请求提供服务。

一旦遇到可伸缩性问题和异步支持,那么一个线程实际上可以为多个请求提供服务(或者更确切地说,一个请求可以放在一个队列中,IIS 工作线程可以重新用于处理其他请求)。

所以你是从单个用户的角度来看这个的。并且该单个用户在该 Web 请求期间可能只运行单个事件线程(忽略异步、io 完成端口等)。也就是说,您可以将单个 Web 请求视为一般意义上的单个线程(但有太多东西可以分拆其他线程,这不是您真正可以指望的东西)。

当您使用 Parallel.ForEach 之类的东西时,您的单个用户请求现在可以在多个线程中执行以提高效率。

IIS 网站有一个与之关联的工作进程。可以配置和调整该工作进程以控制它使用的线程数。但请记住,您的网站是在 IIS 的控制下运行的,而不是它自己的应用程序。

关于c# - .NET Web 应用程序 native 使用多少个线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22874655/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com