2009-08-25 12 views
1

wie die Prozess- und Thread-Leistung wird je nach timslice variieren. (Wie viel Zeit wird ungefähr dauern, um auszuführen). In dieser Situation werden wir Threads anstelle von Prozess verwenden.Prozess und Threads

+1

Theres kein Prozess ohne Threads mein Freund. Ein Prozess ist eine Gruppe von Threads mit mindestens einem Thread, dessen Hauptknoten. – Havenard

+1

@madhu - Bitte formulieren Sie die Frage neu - sieht so aus, als würden Sie nach den relativen Vorteilen der Verwendung mehrerer Prozesse im Vergleich zur Verwendung mehrerer Threads fragen, aber Sie sollten die Frage fokussieren. –

Antwort

9

Ich möchte Ihre Frage wie folgt umformulieren: In welchen Fällen sollte eine einzelne Anwendung mehrere Threads, und in welchen Fällen sollte es stattdessen mehrere Prozesse verwenden?

In dieser Frage spielen Zeitscheiben keine Rolle: Betriebssysteme planen heute nur Threads ein und behandeln einen "einfachen" Prozess mit einem einzigen Thread.

Was Performance-mäßig macht, ist der Erstellungsaufwand: Das Erstellen eines Prozesses ist normalerweise teurer als das Erstellen eines Threads. Multi-processing-Anwendungen vermeiden diese Kosten, indem sie Pools verwenden, d. H. Sie erstellen neue Prozesse nur selten, aber sie können sie wiederverwenden, wenn sie mit einer Aufgabe fertig sind. Da die Erstellung von Threads immer noch teuer ist, machen Benutzer das Gleiche mit Threads.

Was auch wichtig ist, ist Kommunikationsaufwand: in Threads können Sie leicht Speicher teilen; In Prozessen kopieren Sie normalerweise Dinge (z. B. mithilfe einer Pipe). Es gibt Möglichkeiten, Speicher auch über Prozesse hinweg zu teilen, aber diese sind ziemlich schwierig zu verwenden.

Also im Allgemeinen sollten Threads schneller als Prozesse sein. Warum nutzen Menschen noch Prozesse? Weil sie das einfachere Programmiermodell sind. Aufgrund des gemeinsamen Speichers in Threads ist es sehr einfach, Fehler zu machen, und Bibliotheken/APIs, die nicht thread-sicher sind. Ein Mangel an Fadensicherheit kann durch den Einsatz von Verfahren umgangen werden.