<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Threadsicherheit</id>
	<title>Threadsicherheit - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Threadsicherheit"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Threadsicherheit&amp;action=history"/>
	<updated>2026-05-26T17:16:02Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Threadsicherheit&amp;diff=187957&amp;oldid=prev</id>
		<title>imported&gt;Bildungsbürger: /* Gehaltsdaten */</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Threadsicherheit&amp;diff=187957&amp;oldid=prev"/>
		<updated>2024-04-15T08:13:03Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Gehaltsdaten&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Threadsicherheit&amp;#039;&amp;#039;&amp;#039; ({{enS|&amp;#039;&amp;#039;thread safety&amp;#039;&amp;#039;}}) ist eine Eigenschaft von [[Softwarekomponente]]n 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.&lt;br /&gt;
&lt;br /&gt;
Teile eines Computerprogramms können zum selben 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 [[Thread (Informatik)|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.&amp;amp;nbsp;B. [[Lock]]s (engl. für &amp;#039;&amp;#039;Sperre&amp;#039;&amp;#039;: Ein Thread sperrt einen Speicherbereich zur exklusiven Bearbeitung, andere Threads haben währenddessen keinen Zugriff auf diesen Speicherbereich, bis dieser wieder freigegeben wird), [[Mutex]]e und [[Semaphor (Informatik)|Semaphore]].&lt;br /&gt;
&lt;br /&gt;
Ist der gleichzeitige Zugriff mehrerer Threads möglich, so bezeichnet man die Komponente auch als [[Eintrittsinvarianz|eintrittsinvariant]] oder &amp;#039;&amp;#039;reentrant&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
== Inkonsistenzen ==&lt;br /&gt;
Die gleichzeitige Manipulation von [[Daten#Informatik|Daten]] durch mehrere [[Thread (Informatik)|Threads]] kann zu sogenannten [[Konsistenz (Datenspeicherung)|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]].&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
=== Gehaltsdaten ===&lt;br /&gt;
Eine Komponente dient zum Verwalten von Gehaltsdaten. Das Programm kann gleichzeitig von zwei Personalmitarbeitern verwendet werden. Angenommen Mitarbeiter &amp;#039;&amp;#039;A&amp;#039;&amp;#039; erhöht das Gehalt eines Angestellten von 1000,00 Euro um einen Inflationsausgleich von 100,00 Euro. Nahezu gleichzeitig erhöht Mitarbeiter &amp;#039;&amp;#039;B&amp;#039;&amp;#039; das Gehalt ebenfalls um 200,00 Euro wegen besonderer Leistung. Insgesamt soll sich das Gehalt auf 1300,00 Euro erhöhen. &lt;br /&gt;
&lt;br /&gt;
Bei Verwendung nicht threadsicherer Software kann es zu folgender Bearbeitungsabfolge kommen:&lt;br /&gt;
* Mitarbeiter &amp;#039;&amp;#039;A&amp;#039;&amp;#039; liest das aktuelle Gehalt (1000,00 Euro). &lt;br /&gt;
* Mitarbeiter &amp;#039;&amp;#039;B&amp;#039;&amp;#039; liest das aktuelle Gehalt (1000,00 Euro). &lt;br /&gt;
* Mitarbeiter &amp;#039;&amp;#039;A&amp;#039;&amp;#039; erhöht das aktuelle Gehalt um 100,00 Euro und speichert 1100,00 Euro.&lt;br /&gt;
* Mitarbeiter &amp;#039;&amp;#039;B&amp;#039;&amp;#039; erhöht das aktuelle Gehalt um 200,00 Euro und speichert 1200,00 Euro.&lt;br /&gt;
&lt;br /&gt;
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|Lost-Update]]“-Problem).&lt;br /&gt;
&lt;br /&gt;
=== Änderungen einer MediaWiki-Seite ===&lt;br /&gt;
Ein Beispiel für eine threadsichere Applikation ist [[MediaWiki]]. 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 Software 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.&lt;br /&gt;
&lt;br /&gt;
== Synchronisation in Programmiersprachen ==&lt;br /&gt;
Manche Elementarfunktionen von [[Programmiersprache]]n, die nur lokale Variablen bearbeiten, sind immer threadsicher, so zum Beispiel die meisten mathematischen Funktionen, die Zwischenergebnisse immer auf dem [[Stapelspeicher|Stack]] ablegen und immer auf Kopien der Originalvariablen arbeiten. &lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Interprozesskommunikation]]&lt;br /&gt;
* [[Mutex]]&lt;br /&gt;
* [[Nebenläufigkeit]]&lt;br /&gt;
* [[Prozesssynchronisation]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Parallelverarbeitung]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Bildungsbürger</name></author>
	</entry>
</feed>