Thread-safe

Thread-safe

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:

  • Thread safety — is a computer programming concept applicable in the context of multi threaded programs. A piece of code is thread safe if it functions correctly during simultaneous execution by multiple threads. In particular, it must satisfy the need for… …   Wikipedia

  • Thread-Safety — Saltar a navegación, búsqueda Thread safety (Seguridad en hilos) es un concepto de programación de computadores aplicable en el contexto de los programas multi threaded. Una pieza de código es thread safe si funciona correctamente durante la… …   Wikipedia Español

  • Thread Local Storage — Le Thread Local Storage (TLS), ou mémoire locale de thread, est un type de mémoire spécifique et locale à un thread. Ce mécanisme est parfois requis parce que tous les threads d un même processus partagent le même espace d adressage. Donc, les… …   Wikipédia en Français

  • Thread (informatique) — Pour les articles homonymes, voir Thread et Fil. Un processus avec deux threads. Un thread ou fil (d exécution) o …   Wikipédia en Français

  • Thread-safety — Потоковая безопасность (англ. thread safety) это концепция программирования, применимая к многопоточным программам. Код потоково безопасный, если он функционирует корректно при использовании из нескольких потоков одновременно. В частности,… …   Википедия

  • Drawn thread work — Linen towel with drawn thread work accented with embroidery in stem and satin stitch. Drawn thread work is a form of counted thread embroidery based on removing threads from the warp and/or the weft of a piece of even weave fabric. The remaining… …   Wikipedia

  • Common Thread (The Oak Ridge Boys album) — Common Thread Studio album by The Oak Ridge Boys Released May 24, 2005 Genre Country, Gospel La …   Wikipedia

  • Not safe for work — Diese Seite listet eine Auswahl von Abkürzungen und Akronymen, die im deutschsprachigen Netzjargon allgemein üblich sind und in Chats, Instant Messengern, Diskussionsforen und ähnlichem von praktisch jedem verstanden werden. Abkürzungen, die nur… …   Deutsch Wikipedia

  • Not work safe — Diese Seite listet eine Auswahl von Abkürzungen und Akronymen, die im deutschsprachigen Netzjargon allgemein üblich sind und in Chats, Instant Messengern, Diskussionsforen und ähnlichem von praktisch jedem verstanden werden. Abkürzungen, die nur… …   Deutsch Wikipedia

  • Comparison of TLS Implementations — The Transport Layer Security (TLS) protocol provide the ability to secure communications across networks. There are several TLS implementations which are free and open source software and sometimes choosing between the available implementations… …   Wikipedia

Share the article and excerpts

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