He estado trabajando bajo el principio de compartir nada de la programación concurrente. Esencialmente, todos mis hilos de trabajo tienen copias inmutables de solo lectura del mismo estado que nunca se comparte entre ellos ( incluso por referencia ). En términos generales, esto ha funcionado realmente bien.
Ahora, alguien ha introducido un caché singleton sin bloqueo ( por ejemplo, un diccionario estático ) al que todos los hilos están accediendo simultáneamente. Como el diccionario nunca se modifica después del inicio, no hay bloqueos. No ha habido problemas de seguridad de subprocesos, pero ahora hay una degradación del rendimiento.
La pregunta es ... dado que no hay bloqueos, ¿por qué la introducción de este singleton crea un éxito en el rendimiento? ¿Qué está sucediendo exactamente debajo de las sábanas que podría explicar esto?
Para confirmar, acceder a este nuevo singleton es el único cambio y puedo recrearlo de manera confiable simplemente comentando la llamada al caché.