我有一个运行脚本的ASP.net页面,根据参数不同,运行时间会在1秒到10分钟之间变化。我的问题是,如果服务器是多核的,这个脚本会自动利用所有处理器吗?还是只限于一个处理器?谢谢任何帮助。
我相信每个请求默认只会分配一个处理器/线程。您可以通过在代码中创建多个线程来自行优化,以执行您的工作(这样您可能会使用更多的处理器)。
您可以将应用程序池标记为具有更多线程,但这不会为单个请求分配更多线程/处理器,而是允许您一次处理更多的请求(因为请求会平衡分配到线程上)。
ASP.NET是多线程的。因此,每个页面请求都使用一个新线程来处理。 如果给定处理器的工作负载需要,新线程将分配到不同的CPU/核心上。 但是,ASP.NET会使用所有核心。因此,您的应用程序永远不会受限于一个CPU。
但真正的问题是:您的目标是什么? 1] 您只是担心长时间运行的操作会挂起ASP.NET吗? 2] 还是您希望减少脚本执行所需的时间?
如果将长时间运行的页面设置为异步,则每个线程将立即返回到ASP.NET线程池中,这极大地提高了站点的性能。这解决了问题1。
阅读并了解并行任务库扩展,以了解如何更有效地使用所有核心来处理长时间运行的任务。大多数任务可以分成子任务并行运行。这解决了问题2。
希望这有所帮助。