Ist ein IPC-Mechanismus Shared Memory und Semaphoren für die Synchronisation Simplex wie Pipes oder Duplex wie Nachrichtenwarteschlangen?Re: Shared Memory und Semaphore
Antwort
Wenn mein Verständnis Ihrer Frage richtig ist, ist es Duplex.
Mit gemeinsamen Speicher konnten beide Prozesse beide Wege kommunizieren, nicht nur mit einem als der Leser und einer als der Schreiber. Pipes erlauben nur das Lesen oder Schreiben, aber Sie können dies durch die Verwendung von zwei Pipes überwinden (obwohl Nachrichtenwarteschlangen die bessere Option sind).
Ein Semaphor funktioniert so ... proc a: "Ist die Ressource verfügbar?" Semaphore = -2 Ja. Semaphore ++ Proc b: "Ist die Ressource ..." Semaphore = -1 Ja. Semaphore ++ proc c: "ist die Ressource ..." semaphore = 0 Nr. (nichts passiert)
an dieser Stelle kann proc c Warteschlange (abhängig von Ihrer API, könnte dies eine ausgelastete Schleife sein, oder es könnte sein ein Rückruf, oder Sie können einfach einen wartenden Thread spawnen & schreiben Sie Ihren eigenen Rückruf)
proc a: "ich bin fertig" semaphore--;
Proc c wird feststellen, dass Semaphore verfügbar ist, durch etwas, das wahrscheinlich ähnlich zu dem, was ich bereits erwähnt habe.
der Grund, warum ich das alles geschrieben habe, ist so, ich könnte sagen, es ist beides. Es ist wie eine Nachrichtenwarteschlange, in der Sie Threads auf eine Ressource warten lassen können (gemeinsam genutzter Speicher, der von einem Semaphor gesteuert wird), die eine Aktion auslösen, sogar eine tatsächliche Systemnachricht, wenn sie die Ressource erhalten. Oder Sie könnten einfach beschäftigt sein - warten Sie, bis es fertig ist, und das wäre wie Piping.
- 1. C# multithreading - shared Bitmap, Schlösser und Semaphore
- 2. openmp und Shared Memory Definition
- 3. Java und C++ Shared Memory
- 4. Boost, Shared Memory und Vektoren
- 5. Visual Studio und Shared Memory
- 6. Zugriffskontrolle auf shared memory
- 7. Shared Memory im Multiprocessing
- 8. Boost Shared Memory verwenden
- 9. Postgresql Shared Memory Einstellungen
- 10. Barrier Implementierung für Interprozess in Shared Memory
- 11. php Shared Memory und Semaphor, vermeiden Schlüsselkollision
- 12. Boost :: Asio, Shared Memory und Interprozesskommunikation
- 13. Unterschied zwischen Nachrichtenwarteschlange und Shared Memory?
- 14. Boost-Inter: Shared Memory und stl Typen
- 15. Shared-Memory-Ordner in Mac Fehler Shm: Ungültiges Argument
- 16. C++: OpenMP shared memory protection
- 17. C shared memory using fork()
- 18. Verwaltung von Unix Shared Memory
- 19. Jetson Tegra TX1 Shared Memory
- 20. ABAP: shared memory objects synchronization
- 21. Shared Memory Beispiel für Symbian
- 22. verteilten Shared Memory oder nicht?
- 23. Linux Shared Memory Segmentation Fault
- 24. Distributed Shared Memory in .NET
- 25. schreibe in shared memory Segmentierungsfehler
- 26. Synchronisierter Zugriff auf Daten im Shared Memory zwischen zwei Prozessen
- 27. Wie Shared Memory (Shmget/Shmat) in C ändern?
- 28. Warum sind einige Posix Shared Memory Segmente und Posix Semaphoren für ipcs nicht sichtbar
- 29. Probleme mit Boost: Interprozess Shared Memory
- 30. Was bedeutet "shared memory zone" in nginx?