Thread-Sicherheit

Thread-Sicherheit

Threadsicherheit (engl. thread safety) ist eine Eigenschaft von Softwarekomponenten und hat eine wichtige Bedeutung in der Softwareentwicklung. Sie besagt, dass eine Komponente gleichzeitig von verschiedenen Programmbereichen mehrfach ausgeführt werden kann, ohne dass diese sich gegenseitig behindern.

Teile eines Computerprogramms können zum gleichen Zeitpunkt mehrmals ausgeführt werden. Dabei handelt es sich oft um eine Komponente oder auch nur um eine Funktion des Programms. Zum Zweck der Mehrfachausführung bieten Betriebssysteme sogenannte Threads an. Jeder Thread arbeitet dabei unabhängig von den anderen diesen Programmteil ab. Häufig muss das Programm dabei gleichzeitig auf einen gemeinsamen Speicherbereich (Shared Memory) des Computers zugreifen. Änderungen der einzelnen Threads müssen koordiniert werden, um einen chaotischen Zustand des Speichers zu verhindern. Man spricht hier auch von Synchronisation. Zum Zweck der Threadsynchronisation existieren mehrere Konzepte, wie z. B. Locks (engl. Sperre: Ein Thread sperrt einen Speicherbereich zur exklusiven Bearbeitung, andere Threads haben währenddessen keinen Zugriff auf diesen Speicherbereich, bis dieser wieder freigegeben wird), Mutexe und Semaphore.

Ist der gleichzeitige Zugriff mehrerer Threads möglich, so bezeichnet man die Komponente auch als eintrittsinvariant oder reentrant.

Inhaltsverzeichnis

Inkonsistenzen

Die gleichzeitige Manipulation von Daten durch mehrere Threads kann zu sogenannten inkonsistenten Daten führen. Das geschieht, wenn ein Thread Daten ändert, weitere Threads dies aber nicht erfahren und weiterhin den alten Zustand der Daten annehmen. Fortlaufende Berechnungen basieren nun auf nicht mehr aktuellen Daten und sind somit falsch. Ein Beispiel für diese Problematik ist die Race Condition.

Beispiele

Gehaltsdaten

Eine Komponente dient zum Verwalten von Gehaltsdaten. Das Programm kann gleichzeitig von zwei Personalmitarbeitern verwendet werden. Angenommen Mitarbeiter A erhöht das Gehalt eines Angestellten von 1000,00 Euro um einen Inflationsausgleich von 100,00 Euro. Nahezu gleichzeitig erhöht Mitarbeiter B das Gehalt ebenfalls um 200,00 Euro wegen besonderer Leistung. Insgesamt soll sich das Gehalt auf 1300,00 Euro erhöhen.

Bei Verwendung nicht threadsicherer Software kann es zu folgender Bearbeitungsabfolge kommen:

  • Mitarbeiter A liest das aktuelle Gehalt (1000,00 Euro).
  • Mitarbeiter B liest das aktuelle Gehalt (1000,00 Euro).
  • Mitarbeiter A erhöht das aktuelle Gehalt um 100,00 Euro und speichert 1100,00 Euro.
  • Mitarbeiter B erhöht das aktuelle Gehalt um 200,00 Euro und speichert 1200,00 Euro.

Ursache ist, dass bei der zweiten Änderung die erste nicht bekannt war. Es werden also lediglich 200,00 Euro auf das Ursprungsgehalt addiert. Die erste Änderung wird überschrieben und ist verloren (sog. „Lost Update“-Problem).

Änderungen einer Wikipedia-Seite

Ein Beispiel für eine threadsichere Applikation ist die Wikipedia selbst. Es ist möglich, dass zwei Autoren dieselbe Seite zum selben Zeitpunkt ändern. Der Autor, der die Seite als zweites speichert, erhält von der Wikipedia eine Warnung und den Hinweis, dass es bereits eine Änderung gab. Es liegt nun in seiner Verantwortung, diesen Konflikt zu lösen, ohne den vorherigen Beitrag zu überschreiben.

Synchronisation in Programmiersprachen

Manche Elementarfunktionen von Programmiersprachen, die nur lokale Variablen bearbeiten, sind immer threadsicher, so zum Beispiel die meisten mathematischen Funktionen, die Zwischenergebnisse immer auf dem Stack ablegen und immer auf Kopien der Originalvariablen arbeiten.

Siehe auch


Wikimedia Foundation.

Игры ⚽ Нужно сделать НИР?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Andrew Stuart Tanenbaum — Andrew S. Tanenbaum Andrew Stuart „Andy“ Tanenbaum (* 1944 in New York City) ist Professor für Informatik an der Freien Universität Amsterdam (Niederlande). Tanenbaum forscht in den Bereichen Compiler, Betriebssysteme …   Deutsch Wikipedia

  • Andrew Tanenbaum — Andrew S. Tanenbaum Andrew Stuart „Andy“ Tanenbaum (* 1944 in New York City) ist Professor für Informatik an der Freien Universität Amsterdam (Niederlande). Tanenbaum forscht in den Bereichen Compiler, Betriebssysteme …   Deutsch Wikipedia

  • Andy Tanenbaum — Andrew S. Tanenbaum Andrew Stuart „Andy“ Tanenbaum (* 1944 in New York City) ist Professor für Informatik an der Freien Universität Amsterdam (Niederlande). Tanenbaum forscht in den Bereichen Compiler, Betriebssysteme …   Deutsch Wikipedia

  • Cyber War — Zweiter Weltkrieg: Frankreich. Nachrichtenhelferinnen an Vermittlungspult/Telefonanlage: PK KBK Lw zbV (Deutsche Wehrmacht; Bild: Bundesarchiv) Cyberwar ist ein Kofferwort aus den englischen Wörtern …   Deutsch Wikipedia

  • Cyberverteidigung — Zweiter Weltkrieg: Frankreich. Nachrichtenhelferinnen an Vermittlungspult/Telefonanlage: PK KBK Lw zbV (Deutsche Wehrmacht; Bild: Bundesarchiv) Cyberwar ist ein Kofferwort aus den englischen Wörtern …   Deutsch Wikipedia

  • Cyberwar — Zweiter Weltkrieg: Frankreich. Nachrichtenhelferinnen an Vermittlungspult/Telefonanlage: PK KBK Lw zbV (Deutsche Wehrmacht; Bild: Bundesarchiv) Cyberwar ist ein Kofferwort aus den englischen Wörtern …   Deutsch Wikipedia

  • Internetkrieg — Zweiter Weltkrieg: Frankreich. Nachrichtenhelferinnen an Vermittlungspult/Telefonanlage: PK KBK Lw zbV (Deutsche Wehrmacht; Bild: Bundesarchiv) Cyberwar ist ein Kofferwort aus den englischen Wörtern …   Deutsch Wikipedia

  • Netwar — Zweiter Weltkrieg: Frankreich. Nachrichtenhelferinnen an Vermittlungspult/Telefonanlage: PK KBK Lw zbV (Deutsche Wehrmacht; Bild: Bundesarchiv) Cyberwar ist ein Kofferwort aus den englischen Wörtern …   Deutsch Wikipedia

  • Netzkrieg — Zweiter Weltkrieg: Frankreich. Nachrichtenhelferinnen an Vermittlungspult/Telefonanlage: PK KBK Lw zbV (Deutsche Wehrmacht; Bild: Bundesarchiv) Cyberwar ist ein Kofferwort aus den englischen Wörtern …   Deutsch Wikipedia

  • Abkürzungen/Luftfahrt/S–Z — Dies ist der fünfte Teil der Liste Abkürzungen/Luftfahrt. Liste der Abkürzungen Teil 1 A A Teil 2 B–D B; C; D Teil 3 E–K E; F; G; H; I; J; …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”