Maison  >  Questions et réponses  >  le corps du texte

java - Cas操作会加锁吗

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

怪我咯怪我咯2743 Il y a quelques jours696

répondre à tous(1)je répondrai

  • 怪我咯

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

    Les opérations de comparaison et d'échange peuvent ne pas nécessiter de verrous, selon la plate-forme, mais la plupart des plates-formes prennent en charge les cas sans verrouillage. Le verrou le plus simple est un verrou tournant implémenté via test et set. Bien sûr, il peut également être implémenté via cas.

    Spin Lock continuera en effet à essayer lorsque le verrouillage échoue, épuisant les ressources du processeur. Comme

    while (flag.test_and_set()) { /* yield; */ } // 上锁
    flag.clear(); // 解锁
    

    Le verrou fourni par l'interface système suspendra généralement le thread lorsque le verrou échoue, comme

    while (flag.test_and_set()) { flag.wait_for_unlock_signal(); } // 上锁
    

    Le wait_for_unlock_signal() ici est une fonction imaginaire. Mais le verrouillage repose toujours sur des opérations atomiques comme cas. En d’autres termes, les verrous sont désormais implémentés via certaines opérations atomiques de base, telles que tester et définir, comparer et échanger.

    répondre
    0
  • Annulerrépondre