Plusieurs threads (ou processus) souhaitent exécuter le même bloc de code de programme non réentrant spécifique (appelé section critique), ce qui nécessite une technologie de synchronisation de contrôle de concurrence appropriée. Sinon, des conditions de concurrence pourraient survenir.
Bloc de zone (zone critique/ressource critique) ) les opérations nécessitent l'utilisation de certains moyens techniques pour fonctionner sur des ressources critiques. Protéger et éviter toute confusion lors d'une utilisation partagée.
Pour donner un exemple simple, notre Alipay transfère 1 RBM à M.@wangchai À ce moment-là, une autre personne lui transfère également 1 RBM. À ce moment-là, il a déjà 1 yuan dans son portefeuille. , puisque les deux comptes sont saisis en même temps, le système de synchronisation non-thread effectuera les opérations suivantes :
La synchronisation non-thread prendra éventuellement le solde du portefeuille à 2 yuans, ce qui est évidemment faux. Oui, jetons un coup d'œil après avoir ajouté la synchronisation des threads :
Enfin, le solde du portefeuille est de 3 yuans. verrouillage ? Pour le résoudre, alors les spécifiques Quelles sont les méthodes ?
Nous pouvons également utiliser un exemple plus populaire pour illustrer :
Il y a une intersection nouvellement construite, juste au début Est est-il adapté à cette intersection ? Il n'y a pas beaucoup de véhicules ? Chaque fois que nous arrivons à cette intersection, nous la dépassons avec plaisir. Mais petit à petit, de plus en plus de gens connaissent cette route, mais tout le monde passe l'intersection de manière ordonnée. jour Il y a eu un accident, donc le responsable des aménagements routiers a installé un feu tricolore Ce n'est que lorsque le feu vert dans cette direction est allumé que les personnes dans cette direction peuvent avancer. Il s'agit d'un verrou mutex. 🎜>- Certains véhicules ne doivent pas nécessairement traverser l'intersection lorsqu'ils arrivent ici. Certains véhicules font ici demi-tour, les responsables de l'aménagement routier ont donc conçu une voie de demi-tour pour permettre aux véhicules de faire demi-tour. passez sans avoir à attendre avec les véhicules de passage. Ce n'est que lorsque le feu est rouge que vous pouvez faire demi-tour. C'est le verrou en lecture-écriture
- Il y a eu un incendie dans un entrepôt à proximité, et le camion de pompiers a occupé la voie de virage (les ressources occupées ne sont pas libérées, et d'autres peuvent passer par eux-mêmes ) jusqu'au convoi de pompiers ?? ?Les véhicules derrière ne peuvent passer normalement qu'après être passés. C'est l'écluse de rotation
- Cette intersection est l'entrée de la ville. la pression a augmenté et le service des transports a commencé à préciser les réglementations. Véhicules extérieurs à la ville pendant les heures de pointe du matin et du soir. La circulation est interdite et des numéros restreints apparaissent. Il s'agit d'ajouter des « variables de condition » et d'ajouter des tampons pour soulager la pression
.
- Certains exemples ne sont peut-être pas aussi précis, comme les verrous rotatifs, mais cet exemple est combiné avec la réalité. La théorie nous permet de comprendre rapidement les caractéristiques de chaque verrou dans la mémoire.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!
Déclaration:Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn