>  Q&A  >  본문

java - Cas操作会加锁吗

问题:
(1)不需要cas操作来加锁和解锁,这个怎么理解??cas操作不是如果比较不成功那么就一直尝试吗?和加锁有什么关系??这个该如何理解

怪我咯怪我咯2743일 전705

모든 응답(1)나는 대답할 것이다

  • 怪我咯

    怪我咯2017-04-18 10:54:40

    비교 및 교환 작업에는 플랫폼에 따라 잠금이 필요하지 않을 수 있지만 대부분의 플랫폼은 잠금 없는 CAS를 지원합니다. 가장 간단한 잠금은 테스트와 설정을 통해 구현되는 스핀 잠금입니다. 물론 CAS를 통해서도 구현할 수 있습니다.

    잠금이 실패하면 스핀 잠금이 계속 시도되어 CPU 리소스가 소진됩니다.

    등 으아아아

    시스템 인터페이스에서 제공하는 잠금은 일반적으로

    과 유사하게 잠금에 실패할 경우 스레드를 일시 중지합니다. 으아아아

    여기 wait_for_unlock_signal()는 가상의 함수입니다. 그러나 잠금은 여전히 ​​cas와 같은 원자적 작업에 의존합니다. 즉, 이제 잠금은 테스트, 설정, 비교, 교환과 같은 몇 가지 기본적인 원자적 작업을 통해 구현됩니다.

    회신하다
    0
  • 취소회신하다