Pracowałem zgodnie z zasadą równoczesnego programowania bez udziału. Zasadniczo wszystkie moje wątki robocze mają niezmienne kopie tylko do odczytu tego samego stanu, które nigdy nie są udostępniane między nimi ( nawet przez odniesienie ). Ogólnie rzecz biorąc, działało to naprawdę dobrze.
Teraz ktoś wprowadził bufor singleton bez blokady ( np. Słownik statyczny ), do którego jednocześnie uzyskują dostęp wszystkie wątki. Ponieważ słownik nigdy nie jest zmieniany po uruchomieniu, nie ma blokad. Nie wystąpiły żadne problemy z bezpieczeństwem wątków, ale teraz nastąpił spadek wydajności.
Pytanie brzmi ... skoro nie ma żadnych blokad, dlaczego wprowadzenie tego singletonu tworzy hit? Co dokładnie dzieje się pod przykrywkami, które mogłyby to wyjaśnić?
Aby to potwierdzić, dostęp do tego nowego singletonu jest jedyną zmianą i mogę go wiarygodnie odtworzyć, po prostu komentując połączenie z pamięcią podręczną.