답변

1

this answer에도 불구하고 공식적인 대답은 아니오라고 생각합니다.

내가 말하는 이유는 DatabaseparameterCache이라는 인스턴스 변수에 저장 프로 시저 매개 변수를 캐시합니다.

캐시에 항목이 추가되고 parameterCache에 대한 잠금을 먼저 획득하지 않고도 ClearParameterCache() 방법을 사용하여 캐시를 삭제할 수 있습니다.

ClearParameterCache()이 호출되면 한 스레드가 캐시에 항목이 있다고 생각한 다음 다른 스레드가 캐시를 지우는 상황을 피할 수 있으며 첫 번째 스레드가 제거 된 항목을 검색하고 예외가 발생하면 예외가 발생할 수 있습니다 던졌습니다.

좋은 소식은 ClearParameterCache()이 호출되지 않는다면 최악의 경우 매개 변수가 여러 번 파생 될 수 있고 여러 스레드 (다른 스레드에 의해)에 여러 번 추가 될 수 있다는 것입니다. 나는 그것을 테스트하지는 않았지만 (여전히 비효율적 임에도 불구하고) 여전히 작동해야하는 것처럼 보입니다.

사실상 전화하지 않는 한 ClearParameterCache() 나는 괜찮다고 생각합니다.

관련 문제