views:

44

answers:

1

If I declare a static field in a type instantiated within an ASP.NET application, hosted within IIS, is the same variable (i.e. same memory location) used by all of the worker threads used by IIS, opening up concurrency issues?

+2  A: 

Yes. Static variables are shared across an entire AppDomain, which means all worker threads that live in that AppDomain share the same "instance" of that variable.

Static variables are generally a poor choice for highly concurrent applications, like web apps. Depending on your specific scenario, consider session variables.

Michael Petrotta
Given this; should all static *methods* be re-entrant in an IIS-based web app?
Ben Aston
@Ben: yes, absolutely. Web apps are much more sensitive to reentrantcy issues than desktop apps, in my experience.
Michael Petrotta