Multithreading — Änderungen 5774 → 5779

Zeile 3: Zeile 3:
  
 
== Softwaremultithreading ==
 
== Softwaremultithreading ==
−
Bei softwareseitigem Multithreading wird jeder Thread in dem Prozesstask als eigener Task ausgeführt, der sich aber von einen normalen Task darinn unterscheidet, dass er sich den Speicher und die zugeteilte Rechenzeit vom Scheduler mit dem Rest des Prozesstasks teilen muss. Das klingt vieleicht banal, bringt aber dennoch einen Geschwindigkeitsvorteil. Die Umsetzung muss durch eine selbstgeschriebene Bibliothek erfolgen, die mit den Userprogrammen gelinkt wird.
+
Durch softwareseitiges Multithreading ist es möglich neben dem "Hauptthread", der z.B. in C die main() Funktion ausführt, weitere Threads, die eine andere Befehlssequenz innerhalb eines Prozesses gleichzeitig zum bzw. unabhängig vom Hauptthread auszuführen, zu erstellen. Alle Ressourcen (Dateihandles, Speicher, etc.) können von allen Threads benutzt werden, wodurch es zu [[Race Conditions]] und anderen Problemen (TODO: Wo linken wir hier am besten hin?) kommen kann.
 +
Meist wird Softwaremultithreading durch das Betriebssystem durch spezielle Syscalls zum Erstellen und Zerstören von Threads unterstützt. Es ist auch möglich Threads im Userspace zu emulieren.
  
 
== Hardwaremultithreading ==
 
== Hardwaremultithreading ==