Я работал по принципу параллельного программирования без разделения ресурсов. По сути, все мои рабочие потоки имеют неизменные доступные только для чтения копии одного и того же состояния, которое никогда не передается между ними ( даже по ссылке ). Вообще говоря, это сработало очень хорошо.
Теперь кто-то ввел одноэлементный кэш без блокировки ( например, статический словарь ), к которому все потоки обращаются одновременно. Поскольку словарь никогда не изменяется после запуска, блокировки отсутствуют. Проблем с безопасностью потоков не было, но теперь наблюдается снижение производительности.
Вопрос заключается в том, что, поскольку нет блокировок, почему появление этого синглтона приводит к снижению производительности? Что именно происходит под одеялом, что могло бы объяснить это?
Чтобы подтвердить, доступ к этому новому синглтону - единственное изменение, и я могу надежно воссоздать его, просто закомментировав вызов кеша.