Objectif : Vous pouvez utiliser des sémaphores pour limiter le nombre de threads accédant à une ressource partagée
Signification : Les sémaphores font référence à des objets qui contrôlent l'accès aux ressources communes. Avant d'accéder à la ressource, le thread doit obtenir une autorisation du sémaphore. Après avoir accédé à la ressource, le thread doit renvoyer l'autorisation au sémaphore. Une fois l'autorisation obtenue, le nombre total d'autorisations disponibles dans le sémaphore est réduit de 1. Une fois l'autorisation libérée, le nombre d'autorisations dans le sémaphore est augmenté de 1.
Un seul sémaphore autorisé peut être utilisé pour simuler un verrouillage mutuellement exclusif.
Exemple :
Où ?
(Le verrou ici fait référence à un verrou mutex)
Différence :Portée
Sémaphore : inter-processus ou inter-thread
Mutex : inter-thread
Exécution en cas de verrouillage
Sémaphore : Si la valeur du sémaphore > alors d'autres threads peuvent effectuer des tâches. Et après une exécution réussie, value--; if value=0, alors le thread sem_wait provoque le blocage du thread jusqu'à ce que value++ soit libéré après la libération de sem_post, et d'autres threads peuvent s'exécuter en fonction de la valeur.
Verrouillage mutex : un seul objet est verrouillé (verrouillé), aucun autre thread ne peut accéder à l'objet verrouillé.
L'un est la synchronisation et l'autre est l'exclusion mutuelle
Sémaphore : utilisé en multi -threading Le multitâche est synchronisé. Lorsqu'un thread termine une action, il indique aux autres threads via un sémaphore que les autres threads effectuent certaines actions.
Verrouillage Mutex : utilisé pour l'exclusion mutuelle des multi-threads et des multi-tâches. Une fois qu'un thread occupe une ressource, les autres threads ne peuvent pas y accéder. Ce n'est que lorsque ce thread est déverrouillé que les autres threads peuvent l'utiliser.
. Articles associés :
Exemples de sémaphores mutex et de mécanismes d'attente multi-thread en Java
Explication détaillée d'exemples d'utilisation de base des sémaphores PHP
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!