Frage

Ist ein IPC-Mechanismus mit Shared Memory und Semaphore für die Synchronisation simplex wie Rohre oder Duplex wie Nachrichtenwarteschlangen?

War es hilfreich?

Lösung

Wenn mein Verständnis für Ihre Frage richtig ist, ist es Duplex.

Mit Shared Memory, könnten beiden Prozesse in beiden Richtungen kommunizieren, nicht nur mit einem als Leser und einem als Schriftsteller. Pipes nur erlauben entweder Lesen oder Schreiben, aber man kann dies überwinden durch zwei Rohre mit (obwohl Nachrichtenwarteschlangen eine bessere Option sind).

Andere Tipps

Eine Semaphore funktioniert wie folgt ... proc a: „Ist die Ressource zur Verfügung?“ Semaphore = -2 Ja. Semaphore ++ proc b: "Ist die Ressource ..." Semaphore = -1 Ja. Semaphore ++ proc c: "ist die Ressource ..." Semaphore = 0 Nein (nichts passiert)

An diesem Punkt proc c kann Warteschlange (je nach api, könnte dies eine geschäftige Schleife sein oder es könnte ein Rückruf sein, oder Sie könnten einfach einen wartenden Thread laichen & Ihren eigenen Rückruf schreiben)

proc a: Semaphore "im done" -;

proc c wird diese Semaphore bemerken verfügbar ist, durch etwas, wahrscheinlich ähnlich dem, was ich bereits erwähnt.

der Grund, warum ich das alles schrieb so könnte ich sagen, seine beiden. Es ist wie eine Nachrichtenwarteschlange, die Sie in Threads warten auf eine Ressource (Shared Memory durch eine Semaphore gesteuert) haben kann, die eine Aktion auslösen, auch eine tatsächliche Systemmeldung, wenn sie die Ressource erhalten. Oder Sie könnten nur Besetzt warten, bis es fertig ist, und das wäre wie Rohrleitungen sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top