Synchronisation IPC en mémoire partagée (sans verrouillage)
Question :
Les développeurs recherchent un mécanisme de synchronisation efficace pour l'IPC en mémoire partagée dans un scénario impliquant plusieurs processus sur un serveur Intel x64 avec des données partagées dans un tampon circulaire. Ils proposent d'exploiter les barrières de mémoire pour garantir la visibilité des données sur les processeurs pour un accès transparent en lecture/écriture. Cependant, les barrières de mémoire GCC ne répondent pas aux attentes.
Réponse :
La file d'attente SPSC (Single-Producter Single-Consumer) d'Interprocess, spsc_queue, offre une file d'attente sans verrouillage solution pour les files d'attente IPC en mémoire partagée.
Mise en œuvre :
Définir les types :
Définir des types personnalisés pour gestion de la mémoire partagée et de l'allocation de chaînes :
Consommateur :
Producteur :
Exemple d'utilisation :
Créez deux processus, un consommateur et un producteur, en utilisant l'implémentation ci-dessus. Le consommateur surveille la file d'attente pendant que le producteur transmet les messages. Observez la messagerie interprocessus transparente en temps réel ou en mode rafale.
Avantages :
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!