There are a number of performance issues with locks and memory pooling:
- Locks are not allocated on cache-line boundaries and suffer from false-sharing issues.
- The extra lock checks (checking the acquired state) cause significant overhead. These should be removed.
- Pooled memory objects are not cache-line aligned and suffer from false-sharing
- Memory pool statistics are useful but costly from a performance standpoint. These should be able to be optionally disabled.