在ASP.Net中,长时间运行的静态操作是一个瓶颈吗?
如果在一个经常调用的静态方法中定义了一个长时间运行的操作,那么ASP.Net应用程序中的其他线程尝试调用相同的方法是否会遇到瓶颈 这是否仅适用于具有“Synchronized”属性>的方法在ASP.Net中,长时间运行的静态操作是一个瓶颈吗?,asp.net,static,multithreading,methods,Asp.net,Static,Multithreading,Methods,如果在一个经常调用的静态方法中定义了一个长时间运行的操作,那么ASP.Net应用程序中的其他线程尝试调用相同的方法是否会遇到瓶颈 这是否仅适用于具有“Synchronized”属性>的方法 我已经搜索过了,似乎找不到确切的答案。这将取决于您何时调用此静态方法。如果您直接从代码隐藏处调用它(例如在页面加载或某些按钮单击中),您将独占为请求提供服务的线程。为请求提供服务的线程从线程池中提取。如果对它们调用缓慢的操作(无论您调用的是静态方法还是实例方法),您的应用程序服务能力将受到影响 如果操作是IO
我已经搜索过了,似乎找不到确切的答案。这将取决于您何时调用此静态方法。如果您直接从代码隐藏处调用它(例如在
页面加载
或某些按钮单击中),您将独占为请求提供服务的线程。为请求提供服务的线程从线程池中提取。如果对它们调用缓慢的操作(无论您调用的是静态方法还是实例方法),您的应用程序服务能力将受到影响
如果操作是IO绑定的(数据库调用、web服务调用、一般的一些网络调用),则可以使用来提高性能。否,它不会阻止任何其他线程,除非该方法获取公共锁(例如由于
Synchronized
属性)或调用同步方法本身
正如Darin所说,您可能会耗尽线程池,但我认为这不是您的问题所担心的。非常清楚,如果不涉及任何同步,您肯定可以让两个线程同时执行相同的静态方法。谢谢Jon。这是我的假设,但我不想假设错误,并为以后的错误选择付出代价。