Ho lavorato sotto il principio "share-nothing" della programmazione concorrente. In sostanza, tutti i miei thread di lavoro hanno immutabili copie di sola lettura dello stesso stato che non sono mai condivise tra loro ( anche per riferimento ). In generale, questo ha funzionato molto bene.
Ora, qualcuno ha introdotto una cache singleton senza blocco ( ad esempio un dizionario statico ) a cui tutti i thread stanno accedendo contemporaneamente. Poiché il dizionario non viene mai modificato dopo l'avvio, non ci sono blocchi. Non ci sono stati problemi di sicurezza dei thread, ma ora c'è un degrado delle prestazioni.
La domanda è ... dato che non ci sono serrature perché l'introduzione di questo singleton crea un successo nelle prestazioni? Cosa sta succedendo esattamente sotto le coperte che potrebbe spiegare questo?
Per confermare, l'accesso a questo nuovo singleton è l'unica modifica e posso ricreare in modo affidabile questo semplicemente commentando la chiamata alla cache.