问题:
(1)不需要cas操作来加锁和解锁,这个怎么理解??cas操作不是如果比较不成功那么就一直尝试吗?和加锁有什么关系??这个该如何理解
怪我咯2017-04-18 10:54:40
비교 및 교환 작업에는 플랫폼에 따라 잠금이 필요하지 않을 수 있지만 대부분의 플랫폼은 잠금 없는 CAS를 지원합니다. 가장 간단한 잠금은 테스트와 설정을 통해 구현되는 스핀 잠금입니다. 물론 CAS를 통해서도 구현할 수 있습니다.
잠금이 실패하면 스핀 잠금이 계속 시도되어 CPU 리소스가 소진됩니다.
등 으아아아시스템 인터페이스에서 제공하는 잠금은 일반적으로
과 유사하게 잠금에 실패할 경우 스레드를 일시 중지합니다. 으아아아여기 wait_for_unlock_signal()
는 가상의 함수입니다. 그러나 잠금은 여전히 cas와 같은 원자적 작업에 의존합니다. 즉, 이제 잠금은 테스트, 설정, 비교, 교환과 같은 몇 가지 기본적인 원자적 작업을 통해 구현됩니다.