views:

27

answers:

2

If a long running operation is defined in a frequently called static method, is it a bottleneck for other threads in an ASP.Net application trying to call the same method?

Does that only apply to methods with the "Synchronized" attribute>?

I've searched and can't seem to find a definitive answer.

A: 

This will depend on when you call this static method. If you call it directly from the code behind (for example in Page_Load or some button click) you will monopolize the thread serving the request. Threads serving requests are drawn from a thread pool. If slow operations are called on them (no matter if you call a static or instance method) your application servicing capabilities will suffer.

You could use asynchronous pages to improve performance if the operation is IO bound (database call, web service call, some network call in general).

Darin Dimitrov
+1  A: 

No, it's not going to block any other threads unless the method either acquires a common lock (e.g. due to the Synchronized attribute) or calls a synchronized method itself.

As Darin says, you could potentially exhaust the thread pool, but I don't think that's what your question was worrying about. To be absolutely clear, you can definitely have two threads executing the same static method at the same time, if there isn't any synchronization involved.

Jon Skeet
Thanks Jon. That's what I assumed, but I didn't want to assume wrong and pay for a bad choice later.
Laramie