다음을 통해 공유


SpinLock

SpinLock 이 구조는 잠금을 획득하기 위해 기다리는 동안 회전하는 하위 수준의 상호 배제 동기화 기본 형식입니다. 다중 코어 컴퓨터에서 대기 시간이 짧을 것으로 예상되고 경합이 최소화 SpinLock 된 경우 다른 종류의 잠금보다 더 나은 성능을 발휘할 수 있습니다. 그러나 SpinLock 메서드 또는 System.Threading.Monitor 메서드가 프로그램의 성능을 현저히 저하시킨다고 프로파일링을 통해 판단되는 경우에만 Interlocked을 사용하는 것을 권장합니다.

SpinLock 는 아직 잠금을 획득하지 않은 경우에도 스레드의 시간 조각을 생성할 수 있습니다. 스레드 우선순위 반전을 방지하고 가비지 수집기가 더 효율적으로 작동하도록 하기 위해 이렇게 합니다. SpinLock를 사용할 때, 잠금을 매우 짧은 시간 동안만 유지할 수 있도록 하고, 잠금을 보유한 스레드가 차단되지 않도록 확인하십시오.

SpinLock은 값 형식이므로 두 복사본이 동일한 잠금을 참조하도록 하려면 참조로 명시적으로 전달해야 합니다.

이 형식을 사용하는 방법에 대한 자세한 내용은 다음을 참조하세요 System.Threading.SpinLock. 예시: Low-Level 동기화를 위한 SpinLock 사용 방법을 참조하십시오.

SpinLock에서는 - 개발 단계에서 특정 시간에 잠금을 유지하는 스레드를 추적하는 데 사용할 수 있는 스레드추적 모드를 지원합니다. 스레드 추적 모드는 디버깅에 매우 유용하지만 성능이 저하될 수 있으므로 프로그램의 릴리스 버전에서 해제하는 것이 좋습니다. 자세한 내용은 방법: SpinLock에서 Thread-Tracking 모드 사용을 참조하세요.

참고하십시오