doch - in Jeder.
fork(): Es werden quasi nur die Prozessinformationen kopiert und das geht schnell. … solange niemand selbigen ändert.
was wohl den aller haeufigsten Fall darstellen sollte. … schoen ist, dass die Prozesse schnell da sind … das hilft uns hier aber nicht sehr
Absturz: Das ist sogar ein gravierender Nachteil. Wie will man in so einer Umgebung die Datensicherheit garantieren können?
das sage ich ja … das ist eine andere Eigenschaft die durchaus ein Nachteil des Threadings darstellt … man muss halt sauberer implementieren …
Und schon sind wir wieder beim Thema des Threads:
Wenn zwei Threads, die auf dem gleichen Prozessor laufen, zu synchronisieren sind, passiert das im L1 oder L2 Cache des Prozessors.
die selbe situation hat das system auch bei parallelen prozessen zu lösen …
Was ist, wenn das massiv parallel auf vielen Cores betrieben wird? Dann muss jedweger schreibender - und ggf. auch diverse lesende (Stichwort: volatile Daten) - Speicherzugriff der Threads miteinander synchronisiert werden, über Prozessorebenen hinweg.
für diese speziellen aufgabenfelder gibt es entsprechende compiler - oder auch entsprechende prozessor-architekturen in kombination mit compilern für MMP …
Auch das ist ein Lock, aber dieser Lock ist nur in Threads notwendig, nicht bei getrennten Prozessen. Da die Anzahl der notwendigen Locks mit der Anzahl der Threads und Cores ansteigt, kann das die Abarbeitung sogar mehr ausbremsen als die möglichen Verluste durch getrennte Prozesse.
falsche annahme …
Bleibt festzuhalten: sowohl Threads wie auch getrennte Prozesse haben ihre Vor- und Nachteile.
ja … das bestreitet niemand - ich sagte ja auch nicht, dass threads grundsaetzlich vorzuziehen sind … legt man wert auf performance → threads …
Man sollte diese gut gegeneinander abwägen. Pauschale Aussagen, was schneller oder besser ist, kann man ohne Kentniss des Anwendungsfalls nicht treffen.
doch - schneller sind threads … sicherer sind prozesse - man muss halt wissen, was man will
es koennte aber auch sein, dass wir aneinander vorbeireden - du hast eine sehr unixoide perspektive auf das thema … user-mode-threads und kernel-mode-threads … ausserdem sind da viele systemaufrufe blockierend - was natuerlich zu locks fuehrt … wenn man aber eine anwendung entwickelt, dann muss man wissen, dass man die locks selbst in der hand hat - und entsprechend wissen sollte was man tut … die welt ist nicht linux