Unterschied zwischen einer mutex und semaphor - intra-Prozess und inter-Prozess

Lesen der verschiedenen Beiträge auf SO auf Unterschiede zwischen den beiden (mutex und semaphore) komme ich zum folgenden Schluss bitte korrigieren Sie mich, wenn ich falsch bin.Dies ist vor allem im Zusammenhang mit windows. Ich verstehe, dass kritische Abschnitte sind Abschnitte in einem code, die geschützt werden müssen (ich.e) kann nicht zugegriffen werden, die von mehreren threads zur gleichen Zeit. Nun, um jene zu schützen, die kritische Abschnitte Mutexe verwendet werden. Diese Mutexe können entweder algorithmen oder Datenstrukturen. Jetzt Mutexe können in der Regel in zwei Geschmacksrichtungen (intra-Prozess und inter-Prozess) . Für die intra-Prozess, in dem keine Aufrufe an den kernel für die Verriegelung vorgenommen werden, könnten wir Boost-Thread synchronisierungsprimitiven wie lock_guard , unique_lock , shared_lock (single writer/multiple readers) und für die inter-Prozess, den wir nutzen könnten Boost Interprozesskommunikation semaphore.Nun sind diese inter-Prozess-Mutexe sind grundsätzlich als semaphore. Der Grund, warum ich geschlossen, dass
da war diese post, die besagt

Semaphor-Signalisierung Mechanismus ("ich bin fertig, können Sie auf" Art
des Signals). Zum Beispiel, wenn Sie songs hören (nehme an, es als eine
tasks) auf Ihrem Handy und in der gleichen Zeit, die dein Freund dir genannt, ein
interrupt wird ausgelöst, bei denen eine interrupt-service-routine
(ISR) das signal für die call processing task-wakeup.

Erhöhung jetzt Interprozess-Staaten

.. Steigern.Interprozesskommunikation implementiert ähnliche Mechanismen zu synchronisieren
threads von verschiedenen Prozessen.

Bitte lassen Sie mich wissen, wenn mein Verständnis der semaphore ist in die richtige Richtung.

Nun eine andere definition von semaphore, die ich nicht verstehen kommt von hier
die ausgewählte Antwort-Staaten

Einer semaphore macht das gleiche wie ein mutex erlaubt aber x Anzahl der threads
geben Sie.

Die korrekt beschreibt, was ein semaphor hat ? Es tut ermöglichen Inter-Prozess-Ressourcen-Schutz oder muss es erlauben, eine bestimmte Anzahl von threads auf eine Ressource zugreifen ? Wenn es die zweite wäre es nicht zu einer Beschädigung der Ressource, da mehrere threads greifen auf Sie zu.

  • in windows wird ein semaphor ist ein Event finden Sie unter CreateEvent
  • Eine gute Erklärung finden Sie hier: koti.mbnet.fi/niclasw/MutexSemaphore.html Fazit: Ein mutex ist eine sempahore mit dem Wert 1. Im Grunde ist es egal, ob eine Ressource zugegriffen wird, die von mehreren threads oder mehreren Prozessen. Gibt es Unterschiede beim Zugriff auf den Speicher, aber das ist ein anderes Thema.
InformationsquelleAutor MistyD | 2014-11-25
Schreibe einen Kommentar