나는 동시 프로그래밍의 아무 것도없는 원칙 아래서 일하고있다. 기본적으로 모든 작업자 스레드에는 동일한 상태의 변경 불가능한 읽기 전용 복사본이 있으며 이들 스레드는 절대로 참조로 공유되지 않습니다 . 일반적으로, 이것은 실제로 잘 작동했습니다.
이제 누군가가 모든 스레드가 동시에 액세스 하는 잠금없는 싱글 톤 캐시 ( 예 : 정적 사전 )를 도입했습니다 . 시작 후에 사전이 변경되지 않으므로 잠금이 없습니다. 스레드 안전성 문제는 없었지만 이제 성능이 저하되었습니다.
문제는 ... 잠금이 없기 때문에이 싱글 톤을 도입하면 성능이 저하되는 이유는 무엇입니까? 이것을 설명 할 수있는 표지 아래에서 정확히 무슨 일이 일어나고 있습니까?
확인하기 위해이 새로운 싱글 톤에 액세스하는 것이 유일한 변경 사항이며 캐시에 대한 호출을 주석 처리하여이를 확실하게 다시 만들 수 있습니다.