Mutex welche Bedeutung bzw. was ist das genau?

#5009092
Eieiei schrieb:
> Guten Morgen,
>
> Ich bräuchte zum Verständnis mal ein paar Beispiele in denen Mutex eine
> wichtige Rolle spielt.
>
> Aus dem Wiki werde ich nicht schlau.

Im Prinzip ist es einfach: Wenn ein Thread in mehreren Einzelaktionen 
auf irgendeine Ressource zugreift und das nicht durch einen anderen 
Thread, der auf die selben Ressourcen zugreift, unterbrochen werden 
darf, kannst du einen Mutex verwenden, um das zu erzielen.
Gast #5009111
Oder noch einfacher, durch einen Mutex kannst du sicherstellen, das du 
exklusiven Zugriff auf eine Resource bekommst.

Beispiel
1
mutex.lock();
2
memcpy(global, arg, 100);
3
mutex.unlock();

Die memcpy() operation ist nicht atomar, das heißt, du brauchst mehre 
CPU Zyklen bis diese abgearbeitet ist. Die Variable global ist im 
kompletten Programm verfügbar. In meinem Multitaskingbetriebssystem kann 
es passieren, das Thread A während dieser memcpy() Operation durch den 
Scheduler unterbrochen wird. Wenn jetzt ein weiterer Thread anfängt, 
ebenfalls Daten in global zu kopieren, und danach wieder Thread A seine 
Operation fort führt, hast du in global teils Daten von Thread A und 
Thread B drinnen. Durch den Mutex kann sich Thread A exklusiven Zugriff 
sichern. Wenn Thread B das memcpy() ausführen will, bleibt Thread B 
solange an mutex.lock() hängen, bis Thread A mit mutex.unlock() den 
Mutex wieder frei gibt was sicherstellt, das memcpy() fertig ist.
Im Gegensatz zu einer Semaphore kann ein Mutex nur von dem gleichen 
Thread wieder freigegeben werden, in dessen Kontext er geholt wurde. 
Somit kann man einen Mutex nicht für Threadsynchronisationen verwenden.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.