70 Stimmen

Threading vs. Parallelität, wie unterscheiden sie sich?

Was ist der Unterschied zwischen Threading und Parallelität?

Welcher hat einen Vorteil gegenüber dem anderen?

10 Stimmen

Was ist der Unterschied zwischen Autos und Autofahren? Threading ist die Verwendung von Threads, Parallelität ist, wenn etwas parallel läuft. Die häufigste Art, Dinge parallel laufen zu lassen, ist die Verwendung von Threads.

5voto

Iqra. Punkte 535

Hier ist die beste Antwort, um alle Zweifel in Bezug auf Parallelität und Threading auszuräumen.

Threads sind ein Software-Konstrukt. Ich kann so viele pthreads starten, wie ich will, selbst auf einem alten Einkernprozessor. Multithreading ist also nicht unbedingt parallel: Es ist nur parallel, wenn die Hardware es unterstützt. Wenn Sie also mehrere Kerne und/oder Hyperthreading haben, wird Ihr Multithreading parallel. Und das ist heutzutage tatsächlich die meiste Zeit der Fall.

Bei der Gleichzeitigkeit geht es um Aktivitäten, die keine klare zeitliche Ordnung haben. Auch hier gilt: Wenn die Hardware es unterstützt, können sie parallel ausgeführt werden, wenn nicht, dann nicht.

Traditionell ist Multi-Threading also fast gleichbedeutend mit Gleichzeitigkeit. Und beide werden nur dann parallel, wenn die Hardware dies unterstützt. Selbst dann können Sie viel mehr Threads starten, als die Hardware unterstützt, und es bleibt bei der Gleichzeitigkeit.

De eine Antwort von Victor Eijkhout auf Quora .

4voto

Thevs Punkte 3129

Threading ist die Parallelität des armen Mannes.

EDIT: Um genauer zu sein:

Threading hat nichts mit Parallelität zu tun und umgekehrt. Beim Threading geht es darum, das Gefühl zu vermitteln, dass einige Prozesse parallel laufen. Das macht die Prozesse jedoch nicht zu vollständig ALLE ihre Aktionen insgesamt noch schneller.

1 Stimmen

(-1) A. Jedes Werkzeug hat seinen Platz. B. Haben Sie Beweise für diese Aussage?

0 Stimmen

Ich habe gerade die Frage zum Thema beantwortet. Welche Frage ist - so ist die Antwort.

1 Stimmen

Für diejenigen, die eine ausführliche Diskussion wünschen - lassen Sie uns beginnen mit prodata.lt/DE/Programmierung/OPU_Rechenmodell.pdf .

2voto

Michael Borgwardt Punkte 334642

Wie definieren Sie "Parallelität"? Multithreading ist eine konkrete Umsetzung des Konzepts der parallelen Programmausführung.

Der von RichardOD verlinkte Artikel scheint sich hauptsächlich damit zu befassen, ob Threads auf einem konkreten Rechner tatsächlich parallel ausgeführt werden.

In Ihrer Frage scheinen Sie jedoch Multithreading und Parallelität als Gegensätze zu sehen. Meinen Sie vielleicht Programme, die mehrere Prozesse und nicht mehrere Threads? Wenn ja, sind die Unterschiede:

  • Threads sind viel billiger zu erstellen als Prozesse. Aus diesem Grund führte die Verwendung von Threads anstelle von Prozessen zu einem enormen Geschwindigkeitszuwachs bei Webanwendungen - dies wurde "FastCGI" genannt.
  • Mehrere Threads auf demselben Rechner haben Zugriff auf den gemeinsamen Speicher. Das macht die Kommunikation zwischen Threads viel einfacher, aber auch sehr gefährlich (es können leicht Fehler wie Race Conditions entstehen, die sehr schwer zu diagnostizieren und zu beheben sind).

2voto

Sonu Punkte 11

Wenn wir denken CPU als Unternehmen und Threads als seine Mitarbeiter dann hilft es uns, Threading und Parallelität leichter zu verstehen.

So wie ein Unternehmen viele Arbeiter hat, hat auch die CPU viele Threads.

Außerdem kann es mehr als ein Unternehmen und somit auch mehr als eine CPU geben.

Wenn also Arbeiter (Threads) in einem Unternehmen (CPU) arbeiten, nennt man das Einfädeln .

Und wenn zwei oder mehr Unternehmen (CPU) unabhängig voneinander oder gemeinsam arbeiten, nennt man das Parallelität .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X