Frage Was ist der Unterschied zwischen Nebenläufigkeit und Parallelität?


Was ist der Unterschied zwischen Nebenläufigkeit und Parallelität?

Beispiele werden geschätzt.


762
2018-06-26 17:18


Ursprung


Antworten:


Nebenläufigkeit Wenn zwei oder mehr Aufgaben in überlappenden Zeiträumen beginnen, ausgeführt und abgeschlossen werden können. Es bedeutet nicht notwendigerweise, dass sie beide gleichzeitig laufen werden. Beispielsweise, Multitasking auf einer Single-Core-Maschine.

Parallelität ist wenn Aufgaben buchstäblich gleichzeitig auf einem Multicore-Prozessor laufen.


Zitieren Sonne Multithread-Programmierhandbuch:

  • Parallelität: Eine Bedingung, die vorliegt, wenn mindestens zwei Threads Fortschritte machen. Eine verallgemeinerte Form der Parallelität, die Time-Slicing als eine Form der virtuellen Parallelität enthalten kann.

  • Parallelität: Eine Bedingung, die auftritt, wenn mindestens zwei Threads gleichzeitig ausgeführt werden.


925
2018-06-26 17:24



Warum die Verwirrung existiert

Verwirrung besteht, weil die Wörterbuchbedeutungen dieser beiden Wörter fast gleich sind:

  • Gleichzeitig: vorhanden, passiert oder gleichzeitig (dictionary.com)
  • Parallel: sehr ähnlich und oft gleichzeitig (merriam webster).

Die Art und Weise, wie sie in der Informatik und Programmierung verwendet werden, ist jedoch sehr unterschiedlich. Hier ist meine Interpretation:

  • Nebenläufigkeit: Unterbrechbarkeit
  • Parallelität: Unabhängigkeit

Was meine ich mit obigen Definitionen?

Ich werde mit einer echten Analogie klären. Angenommen, Sie müssen 2 wichtige Aufgaben an einem Tag erledigen:

  1. Bekommen Sie einen Pass
  2. Bekommen Sie eine Präsentation fertig

Nun, das Problem ist, dass Aufgabe 1 verlangt, dass Sie in ein extrem bürokratisches Regierungsbüro gehen, wo Sie 4 Stunden in einer Schlange warten müssen, um Ihren Pass zu bekommen. In der Zwischenzeit wird Aufgabe-2 von Ihrem Büro benötigt und es ist eine kritische Aufgabe. Beide müssen an einem bestimmten Tag beendet sein.

Fall 1: Sequenzielle Ausführung

Normalerweise fahren Sie für 2 Stunden ins Passbüro, warten 4 Stunden in der Schlange, erledigen die Aufgabe, fahren zwei Stunden zurück, fahren nach Hause, bleiben noch 5 Stunden weg und machen die Präsentation fertig.

Fall 2: Gleichzeitige Ausführung

Aber du bist schlau. Sie planen voraus. Du trägst einen Laptop bei dir, und während du in der Schlange wartest, fängst du an, an deiner Präsentation zu arbeiten. Auf diese Weise müssen Sie, sobald Sie wieder zu Hause sind, nur eine Stunde mehr statt 5 Stunden arbeiten.

In diesem Fall werden beide Aufgaben von Ihnen erledigt, nur in Teilen. Sie haben die Paßaufgabe beim Warten in der Leitung unterbrochen und an der Präsentation gearbeitet. Wenn Ihre Nummer angerufen wurde, haben Sie die Präsentationsaufgabe unterbrochen und zur Pass-Aufgabe gewechselt. Die Einsparung von Zeit war im Wesentlichen aufgrund der Unterbrechbarkeit beider Aufgaben möglich.

Parallelität, IMO, sollte in den ACID-Eigenschaften einer Datenbank als "Isolation" betrachtet werden. Zwei Datenbanktransaktionen erfüllen die Isolationsanforderungen, wenn Sie Subtransaktionen auf verschachtelte Weise ausführen, und das Endergebnis ist das gleiche wie wenn die beiden Tasks seriell ausgeführt würden. Denken Sie daran, dass sowohl für die Pass- als auch für die Präsentationsaufgaben Du bist der einzige Henker.

Fall 3: Parallele Ausführung

Nun, da du so ein kluger Kerl bist, bist du offensichtlich ein höherer, und du hast einen Assistenten. Bevor Sie also die Paßaufgabe starten, rufen Sie ihn an und sagen ihm, dass er den ersten Entwurf der Präsentation vorbereiten soll. Du verbringst den ganzen Tag und erfüllst die Pass-Aufgabe, kommst zurück und siehst deine Mails, und du findest den Präsentationsentwurf. Er hat einen ziemlich guten Job gemacht und mit einigen Änderungen in zwei weiteren Stunden, finalisierst du es.

Jetzt, da Ihr Assistent genauso schlau ist wie Sie, konnte er daran arbeiten unabhängig, ohne Sie ständig nach Abklärungen fragen zu müssen. So wurden sie aufgrund der Unabhängigkeit der Aufgaben gleichzeitig von zwei verschiedene Henker.

Immer noch bei mir? In Ordung...

Fall 4: Gleichzeitig, aber nicht parallel

Erinnere dich an deine Passaufgabe, wo du in der Schlange warten musst? Seit es ist Ihre Pass, Ihre Assistentin kann nicht in der Schlange für Sie warten. Somit hat die Passport-Aufgabe Unterbrechbarkeit (Sie können es anhalten, während Sie in der Leitung warten, und es später fortsetzen, wenn Ihre Nummer angerufen wird), aber nein Unabhängigkeit (Ihre Assistentin kann nicht auf Sie warten).

Fall 5: Parallel, aber nicht gleichzeitig

Angenommen, das Regierungsamt hat eine Sicherheitskontrolle, um das Gelände zu betreten. Hier müssen Sie alle elektronischen Geräte entfernen und sie an die Beamten senden, und sie geben Ihre Geräte erst zurück, nachdem Sie Ihre Aufgabe abgeschlossen haben.

In diesem Fall ist die Pass-Aufgabe nicht unabhängig Noch unterbrechbar. Selbst wenn Sie in der Leitung warten, können Sie nicht an etwas anderem arbeiten, weil Sie nicht über die notwendige Ausrüstung verfügen.

Genauso ist die Präsentation so hochgradig mathematisch, dass Sie eine Konzentration von 100% für mindestens 5 Stunden benötigen. Sie können es nicht tun, während Sie in der Schlange für die Passaufgabe warten, selbst wenn Sie Ihren Laptop bei sich haben.

In diesem Fall ist die Präsentationsaufgabe unabhängig (entweder Sie oder Ihre Assistentin können 5 Stunden fokussierte Arbeit leisten), aber nicht unterbrechbar.

Fall 6: Parallele und parallele Ausführung

Nun sagen Sie, dass Sie neben der Zuweisung Ihres Assistenten zur Präsentation auch einen Laptop mit sich führen müssen, um die Aufgabe zu erfüllen. Während Sie in der Zeile warten, sehen Sie, dass Ihr Assistent die ersten 10 Folien in einem gemeinsamen Deck erstellt hat. Sie senden Kommentare zu seiner Arbeit mit einigen Korrekturen. Später, wenn Sie zu Hause ankommen, brauchen Sie statt 2 Stunden für den Entwurf nur 15 Minuten.

Dies war möglich, weil Präsentationsaufgabe hat Unabhängigkeit (Einer von Ihnen kann es tun) und Unterbrechbarkeit (Sie können es anhalten und später fortsetzen). Du hast also gleichzeitig ausgeführt beide Aufgaben und führte die Präsentationsaufgabe parallel aus.

Sagen wir, dass das Regierungsbüro nicht nur zu bürokratisch, sondern auch korrupt ist. So können Sie Ihre Identifikation zeigen, sie eingeben, anfangen, Schlange zu stehen, damit Ihre Nummer angerufen wird, eine Wache bestechen und eine andere Person, die Ihre Position in der Leitung hält, sich zurückschleichen, zurückkommen, bevor Ihre Nummer angerufen wird, und weiter warten dich selber.

In diesem Fall können Sie sowohl die Pass- als auch die Präsentationsaufgabe gleichzeitig und parallel ausführen. Sie können sich schleichen und Ihre Position wird von Ihrer Assistentin gehalten. Beide von Ihnen können dann an der Präsentation usw. arbeiten.


Zurück zu Informatik

In der Computerwelt gibt es hier Beispielszenarien, die für jeden dieser Fälle typisch sind:

  • Fall 1: Interrupt-Verarbeitung
  • Fall 2: Wenn nur ein Prozessor vorhanden ist, aber alle ausgeführten Tasks Wartezeiten aufgrund von E / A haben.
  • Fall 3: Oft gesehen, wenn wir von Map-Reduction- oder Hadoop-Clustern sprechen.
  • Fall 4: Ich denke, Fall 4 ist selten. Es ist ungewöhnlich, dass eine Aufgabe parallel, aber nicht parallel ist. Aber es könnte geschehen. Angenommen, Ihre Aufgabe erfordert Zugriff auf einen speziellen Computerchip, auf den nur über Prozessor 1 zugegriffen werden kann. Selbst wenn der Prozessor 2 frei ist und der Prozessor 1 eine andere Aufgabe ausführt, kann somit die spezielle Berechnungsaufgabe nicht auf dem Prozessor 2 ausgeführt werden.
  • Fall 5: auch selten, aber nicht ganz so selten wie in Fall 4. Ein nicht gleichzeitig auftretender Code kann eine kritische Region sein, die durch Mutexe geschützt ist. Sobald es gestartet ist, es Muss Ausführen bis zum Abschluss. Zwei unterschiedliche kritische Bereiche können jedoch gleichzeitig auf zwei verschiedenen Prozessoren fortschreiten.
  • Fall 6: IMO sprechen die meisten Diskussionen über parallele oder gleichzeitige Programmierung grundsätzlich über Fall 6. Dies ist eine Mischung und Übereinstimmung von parallelen und parallelen Ausführungen.

Nebenläufigkeit und Go

Wenn Sie sehen, warum Rob Pike sagt, Nebenläufigkeit ist besser, müssen Sie verstehen, dass der Grund ist. Sie haben eine wirklich lange Aufgabe, in der es mehrere Wartezeiten gibt, in denen Sie auf einige externe Vorgänge wie das Lesen von Dateien oder das Herunterladen von Netzwerken warten. In seinem Vortrag sagt er nur: "Zerlege diese lange sequenzielle Aufgabe, damit du etwas Nützliches tun kannst, während du wartest." Deshalb spricht er über verschiedene Organisationen mit verschiedenen Gopher.

Jetzt kommt die Stärke von Go darin, dieses Breaking wirklich einfach zu machen go Stichwort und Kanäle. Außerdem gibt es eine ausgezeichnete zugrunde liegende Unterstützung in der Laufzeit, um diese Goroutines zu planen.

Aber im Wesentlichen ist Parallelität besser als Parallelismus?

Sind Äpfel mehr als Orangen?


242
2017-07-10 18:44



Ich mag Rob Pikes Vortrag: Nebenläufigkeit ist keine Parallelität (es ist besser!) (Dias) (sich unterhalten)

Normalerweise spricht Rob über Go und behandelt die Frage von Parallelität und Parallelität in einer visuellen und intuitiven Erklärung! Hier ist eine kurze Zusammenfassung:

Aufgabe: Lassen Sie uns einen Stapel veralteter Sprachhandbücher verbrennen! Eins nach dem anderen!

Task

Nebenläufigkeit: Es gibt viele gleichzeitige Zerlegungen der Aufgabe! Ein Beispiel:

Gophers

Parallelität: Die vorherige Konfiguration findet parallel statt, wenn mindestens zwei Gopher gleichzeitig arbeiten oder nicht.


218
2017-08-20 08:52



Um hinzuzufügen, was andere gesagt haben:

Nebenläufigkeit ist wie ein Jongleur, der viele Bälle jongliert. Wie auch immer es aussieht, der Jongleur fängt / wirft nur einen Ball pro Hand auf einmal. Bei der Parallelität jonglieren mehrere Jongleure gleichzeitig mit Bällen.


119
2017-11-05 06:21



Angenommen, Sie haben ein Programm mit zwei Threads. Das Programm kann auf zwei Arten ausgeführt werden:

Concurrency                 Concurrency + parallelism
(Single-Core CPU)           (Multi-Core CPU)
 ___                         ___ ___
|th1|                       |th1|th2|
|   |                       |   |___|
|___|___                    |   |___
    |th2|                   |___|th2|
 ___|___|                    ___|___|
|th1|                       |th1|
|___|___                    |   |___
    |th2|                   |   |th2|

In beiden Fällen haben wir den gemeinsamen Vorteil, dass mehr als ein Thread läuft.

Wenn wir dieses Programm auf einem Computer mit einem einzelnen CPU-Kern ausführen würden, würde das Betriebssystem zwischen den beiden Threads wechseln, sodass jeweils ein Thread ausgeführt werden kann.

Wenn wir dieses Programm auf einem Computer mit einer Multi-Core-CPU ausführen würden, könnten wir die beiden Threads ausführen parallel - Seite an Seite zur gleichen Zeit.


84
2018-06-10 15:39



Nebenläufigkeit: 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


37
2017-11-14 07:12



Ich werde versuchen, es mit einem interessanten und leicht verständlichen Beispiel zu erklären. :)

Annehmen dass eine Organisation ein Schachturnier mit 10 Spielern organisiert (mit gleichen Schachspielfähigkeiten) wird eine Herausforderung darstellen professioneller Champion Schachspieler. Und da Schach ein 1: 1 Spiel ist, müssen die Organisatoren 10 Spiele auf zeitsparende Weise durchführen, damit sie die gesamte Veranstaltung so schnell wie möglich beenden können.

Hoffentlich werden die folgenden Szenarien leicht mehrere Möglichkeiten beschreiben, diese 10 Spiele durchzuführen:

1) SERIELLE - Sagen wir, dass der Profi mit jeder Person eins nach dem anderen spielt, d. h. startet und beendet das Spiel mit einer Person und startet dann das nächste Spiel mit der nächsten Person und so weiter. Mit anderen Worten, sie beschlossen, die Spiele der Reihe nach durchzuführen. Wenn also ein Spiel 10 Minuten dauert, dann werden 10 Spiele 100 Minuten dauern, außerdem wird angenommen, dass der Übergang von einem Spiel zu einem anderen 6 Sekunden dauert und dann für 10 Spiele 54 Sekunden (ca. 1 Minute) dauert.

also wird die ganze Veranstaltung in etwa 101 Minuten dauern (Schlimmster Ansatz)

2) CONCURRENT - Nehmen wir an, dass der Profi seinen Zug spielt und zum nächsten Spieler übergeht, so dass alle 10 Spieler gleichzeitig spielen, aber der Profispieler nicht mit zwei Personen gleichzeitig ist, er spielt seinen Zug und geht zur nächsten Person über. Nun nehmen Sie an, dass der professionelle Spieler 6 Sek. Benötigt, um seinen Zug zu spielen und auch die Übergangszeit des Profispielers b / w 2 Spieler beträgt 6 Sek. Die gesamte Übergangszeit zum ersten Spieler beträgt 1 Min. (10x6 Sek.). Daher ist, wenn er wieder bei der ersten Person ist, welches Ereignis gestartet wurde, 2 Minuten vergangen (10xtime_per_turn_by_champion + 10xtransition_time = 2mins)

Angenommen, dass alle Spieler 45 Sek. Benötigen, um ihren Zug zu vollenden, basierend auf 10 Minuten pro Spiel vom SERIAL-Event, wird die Nr. Runden vor Spielende sollten 600 / (45 + 6) = 11 Runden (ca.)

So wird das ganze Event ungefähr in 11xtime_per_turn_by_player _ & _ champion + 11xtransition_time_across_10_players = 11x51 + 11x60sec = 561 + 660 = 1221sec = 20,35 Minuten (ungefähr)

SIEHE DIE VERBESSERUNG von 101 Minuten bis 20,35 Minuten (Besserer Ansatz)

3) PARALLEL - Nehmen wir an, die Organisatoren erhalten zusätzliche Mittel und haben sich entschieden, sie einzuladen zwei professionelle Champions(beide gleichermaßen fähig) und teilte die Gruppe der gleichen 10 Spieler (Herausforderer) in zwei Gruppen von je 5 und teilte sie zwei Champions, d. h. jeweils einer Gruppe, zu. Jetzt schreitet das Ereignis in diesen zwei Reihen parallel voran, d.h. mindestens zwei Spieler (einer in jeder Gruppe) spielen gegen die zwei professionellen Spieler in ihrer jeweiligen Gruppe.

Jedoch kann innerhalb der Gruppe der professionelle Spieler mit einem Spieler zu einer Zeit (d. H. Sequentiell), also ohne irgendeine Berechnung, leicht ableiten, dass das gesamte Ereignis ungefähr in 101/2 = 50,5 Minuten abgeschlossen sein wird

SIEHE DIE VERBESSERUNG von 101 Minuten bis 50,5 Minuten (GUTER ANSATZ)

4) CONCURRENT + PARALLEL - Im obigen Szenario können wir sagen, dass die beiden Champions gleichzeitig mit den 5 Spielern in ihren jeweiligen Gruppen spielen (also den 2. Punkt lesen), so dass die Spiele nun parallel laufen, aber innerhalb der Gruppe gleichzeitig laufen.

So werden die Spiele in einer Gruppe ungefähr in 11xtime_per_turn_by_player _ & _ champion + 11xtransition_time_across_5_players = 11x51 + 11x30 = 600 + 330 = 930sec = 15.5mins (ungefähr)

Das gesamte Ereignis (mit zwei solcher parallel laufenden Gruppen) wird ungefähr in 15,5 Minuten abgeschlossen sein

SIEHE DIE VERBESSERUNG von 101 Minuten bis 15.5 Minuten (Bester Ansatz)

HINWEIS: Im obigen Szenario, wenn Sie 10 Spieler mit 10 ähnlichen Jobs und zwei professionelle Spieler mit zwei CPU-Kernen ersetzen, dann wird die folgende Reihenfolge weiterhin wahr:

SERIELL> PARALLEL> CONCURRENT> CONCURRENT + PARALLEL

(HINWEIS: Diese Reihenfolge kann sich für andere Szenarien ändern, da diese Reihenfolge stark von der Abhängigkeit von Jobs abhängig ist, die Kommunikation S / W-Jobs benötigt und S / W-Jobs für den Übergangs-Overhead)


27
2018-04-22 11:24



Zuverlässigkeit:   mehrere Ausführungsabläufe mit der Möglichkeit, Ressourcen zu teilen

Ex:   zwei Threads konkurrieren um einen I / O-Port.

Paralelismus:   Aufteilen eines Problems in mehreren ähnlichen Abschnitten.

Ex:   Analysieren einer großen Datei durch Ausführen von zwei Prozessen auf jeder Hälfte der Datei.


25
2018-06-26 17:23



Sie lösen verschiedene Probleme. Parallelität löst das Problem, dass CPU-Ressourcen und viele Aufgaben knapp sind. Sie erstellen also Threads oder unabhängige Ausführungspfade über Code, um Zeit auf der knappen Ressource zu teilen. Bis vor kurzem dominierte die Nebenläufigkeit die Diskussion wegen der CPU-Verfügbarkeit.

Parallelität löst das Problem, genügend Aufgaben und geeignete Aufgaben zu finden (die richtig aufgeteilt werden können) und diese über genügend CPU-Ressourcen zu verteilen. Parallelität gab es schon immer, aber sie kommt in den Vordergrund, weil Multi-Core-Prozessoren so billig sind.


22
2018-06-26 17:36



Einfaches Beispiel:

Gleichzeitige ist: "Zwei Warteschlangen, die auf einen Geldautomaten zugreifen"

Parallel ist: "Zwei Warteschlangen und zwei Geldautomaten"


21
2018-01-28 03:29



Stellen Sie sich vor, Sie lernen eine neue Programmiersprache, indem Sie sich ein Video-Tutorial ansehen. Sie müssen das Video pausieren, das, was im Code gesagt wurde, anwenden und dann weiter beobachten. Das ist Nebenläufigkeit.

Jetzt bist du ein professioneller Programmierer. Und Sie genießen es, beim Codieren ruhige Musik zu hören. Das ist Parallelität.

Genießen.


11
2018-01-17 20:22