Ho lavorato secondo il principio share-nothing della programmazione concorrente. In sostanza, tutti i miei thread di lavoro hanno copie di sola lettura immutabili dello stesso stato che non sono mai condivise tra loro ( anche per riferimento ). In generale, ha funzionato davvero bene.
Ora, qualcuno ha introdotto una cache singleton senza blocco ( ad esempio un dizionario statico ) a cui tutti i thread accedono contemporaneamente. Dal momento che il dizionario non viene mai modificato dopo l'avvio non ci sono blocchi. Non ci sono stati problemi di sicurezza del thread, ma ora c'è un peggioramento delle prestazioni.
La domanda è ... dal momento che non ci sono blocchi 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 ricrearlo in modo affidabile semplicemente commentando la chiamata nella cache.