Well, part of what I'm trying to do here is find out why XSP just freezes up under load.  It's pretty trivially reproducible with Apache Bench and it's a pretty significant issue.  As you can see from some of these locks I added, they *are* for enumerations.  Personally, I don't call methods or properties that are not marked thread safe as if they're thread safe because I feel I have an understanding of the implementation.  In this case, when we're trying to identify why this FastCGI server falls down under load, my first inclination is to fix these sort of thread safety assumptions.  But despite Microsoft's documented big O statement for List(T).Count, there's nothing saying an implementation of List(T) couldn't do so without keeping a pre-computed integer and instead walking the linked list.  Dump the locking on .Count if you like, although I'm thinking about trying a HashSet or SortedSet in place of this List and just keeping my own integer with interlocked to count how many requests and connections exist.  Regardless, there *is* something wrong with this code, as it falls down under pretty trivial load.