다음을 통해 공유


SpinLock

SpinLock 구조는 잠금을 획득하기 위해 대기하는 동안 회전하는 하위 수준의 동기화 기본 형식입니다. 멀티 코어 컴퓨터에서 대기 시간이 짧은 것으로 예상되고 경합이 최소인 경우 SpinLock의 성능이 다른 종류의 잠금보다 더 뛰어납니다. 그러나 프로파일링을 통해 System.Threading.Monitor 메서드 또는 Interlocked 메서드가 프로그램의 성능을 크게 낮추는 것을 확인하는 경우에만 SpinLock을 사용하는 것이 좋습니다.

SpinLock은 아직 잠금을 획득하지 않은 경우에도 스레드의 시간 조각을 생성할 수 있습니다. 스레드 우선 순위가 반전되는 것을 방지하고 가비지 수집기가 진행되도록 하기 위해 이 작업을 수행합니다. SpinLock을 사용하면 스레드가 매우 짧은 시간 범위 이상으로 잠금을 보유할 수 없고 잠금을 보유하는 동안 스레드가 차단할 수 없습니다.

SpinLock은 값 형식이므로 두 개의 사본이 동일한 잠금을 참조하도록 하려는 경우 참조를 통해 명시적으로 전달해야 합니다.

이 유형을 사용하는 방법에 대한 자세한 내용은 System.Threading.SpinLock을 참조하세요. 예를 들어 방법: 낮은 수준의 동기화에 SpinLock 사용을 참조하세요.

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

참고 항목