1658 Stimmen

Was ist der Unterschied zwischen Gleichzeitigkeit und Parallelität?

Was ist der Unterschied zwischen Gleichzeitigkeit und Parallelität?

Beispiele sind erwünscht.

1846voto

RichieHindle Punkte 256891

Gleichzeitigkeit ist, wenn zwei oder mehr Aufgaben in überlappender Zeit gestartet, ausgeführt und abgeschlossen werden können Zeiträume . Das bedeutet nicht unbedingt, dass beide jemals kandidieren werden. zum gleichen Zeitpunkt . Zum Beispiel, Multitasking auf einer Single-Core-Maschine.

Parallelität ist, wenn Aufgaben buchstäblich gleichzeitig laufen, z. B. auf einem Mehrkernprozessor.


Zitat Sonnentage Handbuch zur Multithreading-Programmierung :

  • Gleichzeitigkeit: Ein Zustand, der vorliegt, wenn mindestens zwei Threads Fortschritte machen. Eine verallgemeinerte Form der Parallelität, die auch Zeitslicing als eine Form der virtuellen Parallelität umfassen kann.

  • Parallelität: Ein Zustand, der eintritt, wenn mindestens zwei Threads gleichzeitig ausgeführt werden.

904voto

Methos Punkte 12298

Warum die Verwirrung besteht

Es herrscht Verwirrung, weil die Wörterbuchbedeutungen dieser beiden Begriffe fast identisch sind:

  • Gleichzeitige : gleichzeitig vorhanden, geschehen oder getan (dictionary.com)
  • Parallel : sehr ähnlich und oft zur gleichen Zeit stattfindend (merriam webster).

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

  • Gleichzeitigkeit : Unterbrechbarkeit
  • Parallelität : Selbstständigkeit

Was meine ich also mit den obigen Definitionen?

Ich werde dies mit einer Analogie aus der realen Welt verdeutlichen. Nehmen wir an, Sie müssen 2 sehr wichtige Aufgaben an einem Tag erledigen:

  1. Besorgen Sie sich einen Reisepass
  2. Eine Präsentation fertigstellen

Das Problem ist, dass man für Aufgabe 1 zu einer extrem bürokratischen Behörde gehen muss, wo man 4 Stunden in einer Schlange warten muss, um seinen Pass zu bekommen. In der Zwischenzeit wird Aufgabe 2 von Ihrem Büro verlangt, und es ist eine kritische Aufgabe. Beide müssen an einem bestimmten Tag erledigt werden.

Fall 1: Sequentielle Ausführung

Normalerweise fährt man 2 Stunden zum Passamt, wartet 4 Stunden in der Schlange, erledigt die Aufgabe, fährt zwei Stunden zurück, geht nach Hause, bleibt weitere 5 Stunden wach und erledigt die Präsentation.

Fall 2: Gleichzeitige Ausführung

Aber du bist klug. Sie planen im Voraus. Sie haben einen Laptop dabei, und während Sie in der Schlange warten, arbeiten Sie an Ihrer Präsentation. Auf diese Weise müssen Sie, wenn Sie wieder zu Hause sind, nur noch eine Stunde statt fünf Stunden arbeiten.

In diesem Fall werden beide Aufgaben von Ihnen erledigt, nur eben in Teilen. Sie haben die Passaufgabe unterbrochen, während Sie in der Warteschlange standen, und an der Präsentation gearbeitet. Als Ihre Nummer aufgerufen wurde, haben Sie die Präsentationsaufgabe unterbrochen und sind zur Passaufgabe übergegangen. Die Zeitersparnis war im Wesentlichen durch die Unterbrechbarkeit der beiden Aufgaben möglich.

Gleichzeitigkeit kann IMO als die Eigenschaft der "Isolation" verstanden werden SÄURE . Zwei Datenbanktransaktionen gelten als isoliert, wenn Teiltransaktionen in jeder beliebigen verschachtelten Form durchgeführt werden können und das Endergebnis dasselbe ist, als wenn die beiden Aufgaben nacheinander ausgeführt würden. Denken Sie daran, dass sowohl für die Pass- als auch für die Präsentationsaufgaben, Sie sind der einzige Scharfrichter .

Fall 3: Parallele Ausführung

Da Sie so ein schlaues Kerlchen sind, sind Sie offensichtlich ein Höhergestellter, und Sie haben einen Assistenten. Bevor Sie sich auf den Weg machen, um mit der Passaufgabe zu beginnen, rufen Sie ihn an und sagen ihm, er soll den ersten Entwurf der Präsentation vorbereiten. Sie verbringen den ganzen Tag damit, die Passaufgabe zu erledigen, kommen zurück und sehen Ihre Mails, und Sie finden den Entwurf der Präsentation. Er hat eine ziemlich solide Arbeit geleistet, und mit ein paar Änderungen in 2 weiteren Stunden stellen Sie sie fertig.

Da Ihr Assistent genauso schlau ist wie Sie, konnte er das Problem lösen. unabhängig ohne dass Sie ständig um Klärung bitten müssen. Da die Aufgaben voneinander unabhängig sind, wurden sie zur gleichen Zeit von zwei verschiedene Henker .

Sind Sie noch bei mir? Na gut...

Fall 4: Gleichlaufend, aber nicht parallel

Erinnern Sie sich an die Aufgabe mit dem Reisepass, bei der Sie in der Schlange warten müssen? Da es sich Ihr Pass, kann Ihr Assistent nicht auf Sie warten. Die Aufgabe "Pass" hat also Unterbrechbarkeit (Sie können es unterbrechen, während Sie in der Schlange warten, und es später fortsetzen, wenn Ihre Nummer aufgerufen wird), aber keine unabhängigkeit (Ihr Assistent kann nicht an Ihrer Stelle warten).

Fall 5: Parallel, aber nicht konkurrierend

Angenommen, die Behörde führt eine Sicherheitskontrolle durch, um die Räumlichkeiten zu betreten. Hier müssen Sie alle elektronischen Geräte abnehmen und den Beamten vorlegen, die Ihnen die Geräte erst zurückgeben, wenn Sie Ihre Aufgabe erfüllt haben.

In diesem Fall ist die Aufgabe des Passes weder unabhängig noch unterbrechbar . Selbst wenn Sie in der Warteschlange stehen, können Sie nicht an etwas anderem arbeiten, weil Sie nicht über die erforderliche Ausrüstung verfügen.

Ähnlich verhält es sich mit einer Präsentation, die so hochgradig mathematisch ist, dass Sie sich mindestens 5 Stunden lang zu 100 % konzentrieren müssen. Sie können das nicht tun, während Sie in der Schlange für die Passaufgabe warten, selbst wenn Sie Ihren Laptop dabei haben.

In diesem Fall lautet die Aufgabe der Präsentation unabhängig (entweder Sie oder Ihr Assistent können 5 Stunden konzentrierte Arbeit investieren), aber nicht unterbrechbar .

Fall 6: Gleichzeitige und parallele Ausführung

Nehmen wir nun an, dass Sie nicht nur Ihren Assistenten mit der Präsentation beauftragen, sondern auch einen Laptop mit zur Passaufgabe nehmen. Während Sie in der Schlange warten, sehen Sie, dass Ihr Assistent die ersten 10 Folien in einem gemeinsamen Deck erstellt hat. Sie schicken ihm Kommentare zu seiner Arbeit mit einigen Korrekturen. Später, als Sie wieder zu Hause ankommen, brauchen Sie statt 2 Stunden nur 15 Minuten, um den Entwurf fertig zu stellen.

Dies war möglich, weil die Präsentationsaufgabe unabhängigkeit (jeder von Ihnen kann das tun) und Unterbrechbarkeit (Sie können den Vorgang anhalten und später fortsetzen). Sie haben also gleichzeitig ausgeführt ambos Aufgaben, und führte die Präsentationsaufgabe parallel aus.

Nehmen wir an, dass die Behörde nicht nur übermäßig bürokratisch, sondern auch korrupt ist. Sie können also Ihren Ausweis vorzeigen, das Amt betreten, sich in die Schlange einreihen, um auf Ihre Nummer zu warten, einen Wachmann und jemand anderen bestechen, um Ihre Position in der Schlange zu halten, sich hinausschleichen, zurückkommen, bevor Ihre Nummer aufgerufen wird, und das Warten selbst wieder aufnehmen.

In diesem Fall können Sie die Aufgaben des Reisepasses und der Präsentation gleichzeitig und parallel durchführen. Sie können sich hinausschleichen, und Ihre Position wird von Ihrem Assistenten eingenommen. Sie beide können dann an der Präsentation arbeiten usw.


Zurück zu Informatik

In der Welt der Datenverarbeitung gibt es für jeden dieser Fälle typische Beispielszenarien:

  • Fall 1: Unterbrechung der Verarbeitung.
  • Fall 2: Wenn es nur einen Prozessor gibt, aber alle ausführenden Tasks Wartezeiten aufgrund von E/A haben.
  • Fall 3: Häufig zu sehen, wenn wir über Map-Reduce- oder Hadoop-Cluster sprechen.
  • Fall 4: Ich denke, Fall 4 ist selten. Es ist ungewöhnlich, dass eine Aufgabe gleichzeitig, aber nicht parallel ausgeführt wird. Aber es könnte passieren. Angenommen, Ihre Aufgabe erfordert den Zugriff auf einen speziellen Rechenchip, auf den nur Prozessor-1 zugreifen kann. Selbst wenn also Prozessor-2 frei ist und Prozessor-1 eine andere Aufgabe ausführt, kann die spezielle Rechenaufgabe nicht auf Prozessor-2 ausgeführt werden.
  • Fall 5: ebenfalls selten, aber nicht ganz so selten wie Fall 4. Ein nicht-gleichzeitiger Code kann eine kritische Region sein, die durch Mutexe geschützt ist. Sobald er gestartet wird, kann er muss bis zum Abschluss ausführen. Allerdings können zwei verschiedene kritische Bereiche gleichzeitig auf zwei verschiedenen Prozessoren ausgeführt werden.
  • Fall 6: IMO geht es bei den meisten Diskussionen über parallele oder gleichzeitige Programmierung im Wesentlichen um Fall 6. Dabei handelt es sich um eine Mischung aus parallelen und gleichzeitigen Ausführungen.

Gleichzeitigkeit und Go

Wenn Sie verstehen, warum Rob Pike sagt, dass Gleichzeitigkeit besser ist, müssen Sie verstehen, was der Grund dafür ist. Sie haben eine wirklich lange Aufgabe, bei der es mehrere Wartezeiten gibt, in denen Sie auf einige externe Operationen wie das Lesen von Dateien oder das Herunterladen aus dem Netzwerk warten. In seinem Vortrag sagt er nur: "Brechen Sie diese lange sequenzielle Aufgabe auf, damit Sie etwas Nützliches tun können, während Sie warten." Aus diesem Grund spricht er über verschiedene Organisationen mit verschiedenen Gophern.

Die Stärke von Go liegt nun darin, dass es dieses Brechen wirklich einfach macht mit go Stichwort und Kanäle. Außerdem bietet die Laufzeitumgebung eine hervorragende Unterstützung für die Planung dieser Goroutinen.

Aber ist Gleichzeitigkeit grundsätzlich besser als Parallelität?

Sind Äpfel besser als Birnen?

282voto

asfer Punkte 3449

Mir gefällt der Vortrag von Rob Pike: Gleichzeitigkeit ist nicht Parallelität (sie ist besser!) (Dias) (Gespräch)

Rob spricht in der Regel über Go und behandelt die Frage der Gleichzeitigkeit vs. Parallelität in einer visuellen und intuitiven Erklärung! Hier ist eine kurze Zusammenfassung:

Aufgabe: Lasst uns einen Haufen veralteter Sprachhandbücher verbrennen! Eins nach dem anderen!

Task

Gleichzeitigkeit: Es gibt viele gleichzeitige Zerlegungen der Aufgabe! Ein Beispiel:

Gophers

Parallelität: Die vorherige Konfiguration erfolgt parallel, wenn mindestens 2 Erdhörnchen gleichzeitig arbeiten oder nicht.

212voto

Pithikos Punkte 16676

Angenommen, Sie haben ein Programm, das zwei Threads hat. Das Programm kann auf zwei Arten laufen:

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

In beiden Fällen besteht Gleichzeitigkeit allein durch die Tatsache, dass mehr als ein Thread läuft.

Wenn wir dieses Programm auf einem Computer mit einem einzigen CPU-Kern ausführen würden, würde das Betriebssystem zwischen den beiden Threads umschalten und jeweils nur einen Thread laufen lassen.

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

189voto

Thomas T Punkte 2127

Um das zu ergänzen, was andere gesagt haben:

Gleichzeitigkeit ist wie ein Jongleur, der mit vielen Bällen jongliert. Unabhängig davon, wie es aussieht, fängt/wirft der Jongleur immer nur einen Ball pro Hand. Parallelität bedeutet, dass mehrere Jongleure gleichzeitig mit Bällen jonglieren.

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