J'ai une ressource de file d'attente qui est partagée entre plusieurs producteurs et plusieurs consommateurs. Tous sont des processus indépendants; aucun processus ne "possède" la file d'attente.Synchronisation multi-processus - meilleur choix que les sémaphores?
De par la nature de la mise en œuvre, l'accès à la file d'attente doit être contrôlé et un seul processus doit être autorisé à pousser ou à sauter à un moment donné. Je pensais que l'utilisation d'un sémaphore nommé POSIX serait la bonne solution, mais quelques détails me dérangent. (Ceci est une implémentation Linux seulement, btw.)
Quand (si jamais) dois-je faire un sem_unlink? Y a-t-il une raison de supprimer la file d'attente?
Je suis préoccupé par un processus qui meurt tout en maintenant le sémaphore de file d'attente verrouillé. Y a-t-il un bon moyen de contourner cela? Je peux faire une attente chronométrée lorsque j'essaie d'obtenir le verrou, mais si le délai expire, j'ai maintenant une condition de course.
Existe-t-il une meilleure solution pour un simple verrouillage binaire comme celui-ci? Peut-être un fichier de verrouillage utilisant fcntl et/ou exclusif s'ouvre-t-il?
Ce sont des applications basées sur les services, donc un "KillNotes" (que j'ai utilisé à plusieurs reprises!) Ne fonctionnerait pas ici, mais merci pour la suggestion. – Joe
La suggestion était en fait d'utiliser des verrous de fichiers. La nécessité de l'entretien ménager tels killnotes KillNotes me fait peur d'utiliser sempahores. – djna
Désolé, j'ai compris votre intention, n'était pas clair sur ma réponse. – Joe