Wofür haben Sie sysv / posix Nachrichtenwarteschlangen verwendet?

8

Ich habe noch nie ein Projekt oder irgendetwas gesehen, das posix oder sysv Nachrichtenwarteschlangen - und neugierig zu sein, für welche Probleme oder Projekte habt ihr sie benutzt?

    
leeeroy 28.02.2010, 16:56
quelle

3 Antworten

2

Ich hatte eine Reihe von Befehlen, die der Reihe nach ausgeführt werden mussten, aber der Hauptprogrammablauf war nicht von deren Beendigung abhängig, also habe ich sie in eine Warteschlange gestellt und über eine System V Nachrichtenwarteschlange an einen anderen Prozess übergeben das Hauptprogramm. Da Nachrichtenwarteschlangen ein asynchrones Kommunikationsprotokoll bereitstellen, waren sie für diese Aufgabe gut geeignet.

Um ehrlich zu sein, habe ich System-V-Nachrichtenwarteschlangen verwendet, weil ich sie vorher noch nie benutzt hatte und wollte. Ich bin mir sicher, dass es andere IPC-Methoden gibt, die ich hätte verwenden können.

Es ist eine Weile her, seit ich eine echte VxWorks-Programmierung gemacht habe, aber Sie können auch Nachrichtenwarteschlangen finden, die in VxWorks-Anwendungen verwendet werden. Nach dem VxWorks Application Programmer's Guide ( Google-Suche), ist der primäre Intertask-Kommunikationsmechanismus in einer einzelnen CPU Nachrichtenwarteschlangen . VxWorks verwendet zwei Nachrichtenwarteschlangen-Unterprogrammbibliotheken (POSIX und VxWorks).

    
jschmier 28.02.2010 18:44
quelle
1

Ich habe einmal ein Textmodus-E / A-Generator-Dienstprogramm geschrieben, das einen Thread für die Aktualisierung der Benutzeroberfläche und eine Anzahl von Arbeitsthreads für die eigentliche E / A-Arbeit hatte. Wenn ein Worker-Thread eine E / A abgeschlossen hat, hat er eine Aktualisierungsnachricht an den UI-Thread gesendet. Ich habe dieses Nachrichtensystem mithilfe einer POSIX-Nachrichtenwarteschlange implementiert.

Warum implementieren Sie es so? Es klang damals wie eine gute Idee, und ich war neugierig, wie sie funktionierten. Ich dachte, ich könnte das Problem lösen und gleichzeitig etwas lernen. Es gab viele verschiedene Techniken, die ich hätte verwenden können, und ich glaube nicht, dass es einen tiefgründigen Grund gab, warum ich diese Technik wählte. Ich habe es erst später bemerkt, aber ich war froh, dass ich eine POSIX-Queue benutzt habe, als ich das Utility auf ein anderes System portieren musste (es war auch POSIX-fähig), also musste ich keine externen Bibliotheken portieren App zum Ausführen).

    
bta 01.03.2010 23:34
quelle
1

Sie können es sicher für IPC verwenden, da es sich um einen IPC-Mechanismus handelt. Mit diesem Mechanismus können Sie Ereignisverarbeitungsanwendungen mit mehreren Prozessen schreiben, in denen alle Anwendungen die Warteschlange verwenden und jeder auf einen speziellen Nachrichtentyp wartet (ein spezielles Ereignis tritt auf). Wenn die Nachricht ankommt, übernimmt der Prozess die Nachricht, verarbeitet diese und setzt das Ergebnis zurück in die Warteschlange, damit der andere Prozess sie verwenden kann.
Sobald ich eine solche Anwendung geschrieben habe, benutze Nachrichtenwarteschlangen. Es ist ziemlich einfach zu arbeiten und benötigt keine Interprozess-Synchronisationsmechanismen wie Semaphoren. Sie können es anstelle von Shared Memory of Memory Mapped-Dateien auch in Situationen verwenden, in denen Sie nur eine Struktur oder eine Art von gepackten Daten an andere Prozesse senden müssen. Message Queues sind weitaus einfacher zu verwenden als jeder andere IPC-Mechanismus.
Dieses Buch enthält alle Informationen, die Sie über Message Queues und andere IPC-Mechanismen in Linux wissen müssen.

    
gst 11.08.2011 11:22
quelle

Tags und Links