잠금 문을 사용하지 않고 고성능 스레드 안전 구성 요소를 구현하면 성능상의 이유로 휘발성 및 연동 만 사용됩니다.잠금없이 다른 스레드에서 객체를 사용하지 않는 경우를 결정 하시겠습니까?
스레드 안전 인스턴스가 포함 된 클래스에 휘발성 참조 유형 멤버가 있습니다. 이 인스턴스는 몇 가지 작업에서만 스레드 안전하며 다른 작업에서는 스레드 안전하지 않습니다. 그 이유와 성능상의 이유로 어떤 경우에는 원본을 업데이트하는 대신 새 인스턴스를 만드는 것이 더 좋습니다. 특히 잠금 문을 사용하지 않기 때문에 실제로 더 빠르게 작동합니다.
휘발성 멤버는 언제든지 다른 인스턴스로 대체 될 수 있으므로 휘발성 키워드는 다중 스레드 환경에서 휘발성 키워드가 아무런 문제가 없음을 보장합니다.
이것은 물론 잘 작동하지만 그 유일한 문제는 이전 인스턴스의 가비지 수집입니다. 성능을 위해 구성 요소를 테스트했을 때 출시 된 인스턴스 가비지 수집에 너무 많은 시간을 소비하는 것으로 나타났습니다.
이제 이전 인스턴스를 재활용하는 방법을 모색 중입니다. 문제는 내가 교체 할 때 이전 인스턴스를 취할 수 없다는 것입니다.이 인스턴스를 계속 사용하는 다른 스레드가있을 수 있고이 인스턴스를 사용하지 않는 방법 (잠금없이)을 찾을 수 없기 때문에 상태를 재설정 할 수 있습니다. 더 이상.
잠금 문없이 이전 인스턴스를 사용하는 스레드가 없다는 것을 어떻게 보장 할 수 있습니까? (휘발성 및 연동 선호)
감사합니다.
것은 정말 성능이 크게 감소 잠금을 사용 않습니다 말할 수없는 경우? – ironic
나는 그 단어를 "결정적"으로 생각하고 그 것을 기억해야한다. –
메모리 관리보다 미세 입자 제어가 필요한 경우 관리되는 응용 프로그램이 올바른 방법이 아닐 수 있습니다. 당신이 자물쇠를 던지는 곳에서 당신은 무엇을하고 있습니까? – GrayWizardx