1658 Stimmen

Was ist der Unterschied zwischen Gleichzeitigkeit und Parallelität?

Was ist der Unterschied zwischen Gleichzeitigkeit und Parallelität?

Beispiele sind erwünscht.

67voto

Ramy M. Mousa Punkte 5241

Stellen Sie sich vor, Sie lernen eine neue Programmiersprache, indem Sie sich ein Videotutorial ansehen. Sie müssen das Video unterbrechen, das Gesagte in Code umsetzen und dann weiterschauen. Das ist Gleichzeitigkeit.

Jetzt sind Sie ein professioneller Programmierer. Und du hörst gerne ruhige Musik, während du programmierst. Das ist Parallelismus.

Wie Andrew Gerrand in GoLang Blog

Bei der Gleichzeitigkeit geht es darum, viele Dinge auf einmal zu erledigen. Parallelität bedeutet, viele Dinge auf einmal zu tun.

Viel Spaß!

64voto

Rajendra Uppal Punkte 17720

Gleichzeitigkeit: Wenn zwei oder mehr Probleme von einem einzigen Prozessor gelöst werden. alt text

Parallelität: Wenn ein Problem von mehreren Prozessoren gelöst wird.

alt text

56voto

Apurva Thorat Punkte 491

Bei der Ausführung der gleichzeitigen Programmierung gibt es 2 Arten: die nicht-parallele gleichzeitige Programmierung und die parallele gleichzeitige Programmierung (auch als Parallelität bezeichnet).

Der Hauptunterschied besteht darin, dass es für das menschliche Auge so aussieht, als würden die Threads bei nicht-paralleler Gleichzeitigkeit gleichzeitig laufen, aber in Wirklichkeit tun sie das nicht. Bei nicht-paralleler Gleichzeitigkeit wechseln die Threads schnell und nutzen den Prozessor abwechselnd durch Zeitslicing. Während bei der Parallelität mehrere Prozessoren zur Verfügung stehen, können mehrere Threads gleichzeitig auf verschiedenen Prozessoren laufen. enter image description here

Referenz: Einführung in die Gleichzeitigkeit in Programmiersprachen

55voto

sactiw Punkte 20857

Ich werde versuchen, dies anhand eines interessanten und leicht verständlichen Beispiels zu erklären :)

Angenommen, dass eine Organisation ein Schachturnier organisiert, bei dem 10 Spieler ( mit gleichen Schachspielfähigkeiten ) wird eine professioneller Champion Schachspieler. Und da Schach ein 1:1-Spiel ist, müssen die Organisatoren 10 Partien zeitsparend durchführen, damit sie die gesamte Veranstaltung so schnell wie möglich beenden können.

Die folgenden Szenarien beschreiben hoffentlich leicht mehrere Möglichkeiten, diese 10 Spiele durchzuführen:

1) SERIELL - Nehmen wir an, der Profi spielt mit jeder Person einzeln, d. h. er beginnt und beendet das Spiel mit einer Person und beginnt dann das nächste Spiel mit der nächsten Person und so weiter. Mit anderen Worten: Sie haben beschlossen, die Spiele nacheinander zu spielen. Wenn also ein Spiel 10 Minuten dauert, dann dauern 10 Spiele 100 Minuten. Nehmen wir außerdem an, dass der Übergang von einem Spiel zum anderen 6 Sekunden dauert, dann sind es bei 10 Spielen 54 Sekunden (ca. 1 Minute).

so dass die gesamte Veranstaltung in etwa 101 Minuten abgeschlossen sein wird ( SCHLECHTESTER ANSATZ )

2) ZUSAMMENHÄNGEND - Nehmen wir an, der Profi spielt seinen Zug und geht zum nächsten Spieler, so dass alle 10 Spieler gleichzeitig spielen, aber der Profi spielt nicht mit zwei Personen gleichzeitig, er spielt seinen Zug und geht zum nächsten Spieler. Nehmen wir nun an, dass ein professioneller Spieler 6 Sekunden braucht, um seinen Zug zu spielen, und dass die Übergangszeit eines professionellen Spielers zwischen zwei Spielern ebenfalls 6 Sekunden beträgt, so dass die gesamte Übergangszeit, um zum ersten Spieler zurückzukehren, 1 Minute (10x6 Sekunden) beträgt. Bis er also wieder bei der ersten Person ist, mit der das Ereignis begonnen wurde, sind 2 Minuten vergangen (10xZeit_pro_Zug_des_Champions + 10xÜbergangszeit=2Minuten)

Wenn man davon ausgeht, dass alle Spieler 45 Sekunden brauchen, um ihren Zug zu vollenden, so ergibt sich bei 10 Minuten pro Spiel aus dem SERIAL-Ereignis die Anzahl der Runden bis zum Ende eines Spiels: 600/(45+6) = 11 Runden (ungefähr)

Das gesamte Ereignis wird also ungefähr in 11xZeit_pro_Zug_von_Spieler_&_Champion + 11xÜbergangszeit_über_10_Spieler = 11x51 + 11x60sec= 561 + 660 = 1221sec = 20.35Minuten (ungefähr) abgeschlossen

SIEHEN SIE DIE VERBESSERUNG von 101 Minuten auf 20,35 Minuten ( BESSERER ANSATZ )

3) PARALLEL - Nehmen wir an, die Organisatoren erhalten zusätzliche Mittel und beschließen daher, Folgendes einzuladen zwei professionelle Meisterspieler (beide gleichermaßen fähig) und teilten die 10 Spieler (Herausforderer) in zwei Gruppen zu je 5 Spielern auf und wiesen sie zwei Champions zu, d.h. je einer Gruppe. Die Veranstaltung läuft nun parallel in diesen beiden Gruppen ab, d. h. mindestens zwei Spieler (einer in jeder Gruppe) spielen gegen die beiden Profis in ihrer jeweiligen Gruppe.

Innerhalb der Gruppe nimmt der Profi-Spieler jedoch einen Spieler nach dem anderen (d.h. der Reihe nach), so dass man ohne Berechnung leicht ableiten kann, dass die gesamte Veranstaltung ungefähr in 101/2=50,5 Minuten abgeschlossen sein wird

SIEHEN SIE DIE VERBESSERUNG von 101 Min. auf 50,5 Min. ( GUTES VORGEHEN )

4) GLEICHZEITIG + PARALLEL - Im obigen Szenario spielen die beiden Champions gleichzeitig (siehe Punkt 2) mit den 5 Spielern in ihren jeweiligen Gruppen, so dass die Spiele in den Gruppen parallel laufen, aber innerhalb der Gruppe gleichzeitig.

Die Spiele einer Gruppe werden also ungefähr in 11xZeit_pro_Zug_von_Spieler_&_Champion + 11xÜbergangszeit_über_5_Spieler = 11x51 + 11x30 = 600 + 330 = 930sec = 15,5mins (ungefähr) abgeschlossen

Die gesamte Veranstaltung (mit zwei solchen parallel laufenden Gruppen) wird also in etwa 15,5 Minuten abgeschlossen sein.

SIEHEN SIE DIE VERBESSERUNG von 101 Minuten auf 15,5 Minuten ( BESTE ANSÄTZE )

HINWEIS: Wenn Sie im obigen Szenario 10 Spieler durch 10 ähnliche Jobs und zwei professionelle Spieler durch zwei CPU-Kerne ersetzen, bleibt die folgende Reihenfolge bestehen:

SERIELL > PARALLEL > NEBENEINANDER > NEBENEINANDER+PARALLEL

(HINWEIS: Diese Reihenfolge kann sich bei anderen Szenarien ändern, da sie in hohem Maße von den Abhängigkeiten zwischen den Aufträgen, den Kommunikationsanforderungen zwischen den Aufträgen und dem Übergangsaufwand zwischen den Aufträgen abhängt.)

40voto

Saurabh Pakhare Punkte 675

Einfaches Beispiel:

Gleichlaufend ist: "Zwei Warteschlangen greifen auf einen Geldautomaten zu"

Die Parallele ist: "Zwei Warteschlangen und zwei Geldautomaten"

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