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
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.
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
Le verrou fourni par l'interface système suspendra généralement le thread lorsque le verrou échoue, comme
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.