Provoquer un événement d’interrogation Linux sur un fichier de mémoire partagée

Deux processus Linux s’ouvrent et mappent le même fichier de mémoire / dev / shm / partagé et l’utilisent comme mémoire commune. Question: quel est le moyen le plus simple et le meilleur pour un processus de “réveiller” l’autre processus pour lui notifier qu’il doit regarder dans la mémoire? Par exemple, un processus peut-il provoquer un événement poll () pour le descripteur de fichier de l’autre processus? La solution n’a pas besoin d’être portable mais j’aimerais que ce soit simple.

C’est pourquoi POSIX a des variables de condition.

Définissez une variable de condition POSIX partagée et son mutex associé dans la zone de mémoire partagée.

Ensuite, attendez un thread sur la variable de condition et l’autre signalez l’événement de variable de condition quand il veut que l’autre thread regarde dans la mémoire.

Il y a beaucoup de matériel sur le Web pour les variables de condition. Voici un très bon court: https://computing.llnl.gov/tutorials/pthreads/#ConditionVariables

Vous pouvez envisager d’utiliser un sémaphore (POSIX nommé sémaphore) pour résoudre ce problème.

Un exemple simple, utilisant la mémoire partagée (dans l’exemple, il est dans System V, mais vous pouvez aussi l’utiliser avec POSIX) et le sémaphore POSIX est dans le lien, comment 2 processus peuvent-ils se parler sans pipe ()?