Multithreading bedeutet, daß der Computer mehrere Aufgaben hat, diese in kleine Pakete unterteilt, und dann den einzelnen Aufgaben eine bestimmte Menge an Zeit zuteilt. Mit diesem "Zeitscheiben-Prinzip" kann auch eine einzige CPU mehrere Aufgaben (Tasks) verwalten.
Genaugenommen ist das Multitasking.
Multithreading geht noch etwas weiter. Ist aber recht ähnlich.
Du hast nicht nur einzelne Aufgaben, sondern sogar einzelne Aufgaben, die sich noch weiter unterteilen lassen.
So kann ich z.B. als Programmierer in einem Modul, das zu einem bestimmten Zeitpunkt wie z.B. bei Erfüllung einer bestimmten Bedingung aufgerufen wird, mehrere Aufgaben definieren, wie z.B. die Berechnung von Zahlenwerten.
Die laufen dann parallel ab.
Das Gegenteil ist Singlethreading, das z.B. alle DOS-Programme konnten. Nur eine einzelne Aufgabe wird zu einer Zeit abgearbeitet, und sie verbraucht alle CPU-Ressourcen.
Im Prinzip könnte man also sagen, daß Multithreading ein Programm (oder ein Programmmodul) in mehrere Aufgaben unterteilt, denen dann beim Multitasking jeweils eine bestimmte Menge an Zeit zugewiesen wird.
Multithreading muß ich als Programmierer extra programmieren; Multitasking müssen die Programmierer der CPU programmieren, damit die das kann.
Bei Multiprozessor-Systemen wird es noch komplizierter: Dort müssen die CPUs nicht nur Multitasking beherrschen können, sondern es müssen die einzelnen Tasks möglichst gleichmäßig auf die einzelnen CPUs verteilt werden ! Außerdem müssen die Speicheradressen abgweglichen werden und vieles mehr. Um das auszubalancieren, brauchen CPUs also noch mehr Programmroutinen einprogrammiert.
Eventuell ist es sogar möglich, selbst Threads (Fäden) aus dem Multithreading auf mehrere CPUs zu verteilen... :WD