Treading vs. Multiprocessing vs. asynchrone Programmierung

Feb 22 2023
Threading, Multiprocessing und asynchrone Programmierung sind allesamt Methoden zur Parallelisierung in einem Computer, aber auch Methoden zur gleichzeitigen Bearbeitung mehrerer Aufgaben. In diesem Blogbeitrag werden wir uns mit der Logik dahinter befassen.
Threads Multiprocessing Asynchronous Programming

Threading, Multiprocessing und asynchrone Programmierung sind allesamt Methoden zur Parallelisierung in einem Computer, aber auch Methoden zur gleichzeitigen Bearbeitung mehrerer Aufgaben. In diesem Blogbeitrag werden wir uns mit der Logik dahinter befassen. Außerdem werden wir uns die Unterschiede ansehen.

Themen

Unter Threading versteht man die Verarbeitung zahlreicher Threads innerhalb eines einzigen Prozesses .
Jeder Thread nutzt den gleichen Speicher und die gleichen Ressourcen, kann aber gleichzeitig verschiedene Aufgaben ausführen.
Threads sind leichtgewichtig und können schnell erstellt und gelöscht werden, sie können jedoch zu Race Conditions , Deadlocks und Problemen beim Zugriff auf gemeinsam genutzte Ressourcen führen.

Wann treten Race Conditions auf?

Eine Race-Bedingung ist eine Situation, die bei gleichzeitiger oder paralleler Programmierung auftreten kann, wenn mehrere Threads gleichzeitig versuchen, auf eine gemeinsam genutzte Variable zuzugreifen.

Der erste Thread liest die Variable und der zweite Thread liest den Wert der Variablen. Der erste und der zweite Thread führen dann ihre Aktionen für den Wert aus und versuchen zu ermitteln, welcher Thread den Wert zuerst in die gemeinsam genutzte Variable schreiben kann. Da der Thread den Wert überschreibt, den der vorherige Thread geschrieben hat, wird der Wert des Threads beibehalten, der seinen Wert zuletzt veröffentlicht.

Wann kommt es zu Deadlocks?

Ein Deadlock tritt auf, wenn zwei Threads gleichzeitig verschiedene Variablen sperren und dann versuchen, die Variable zu sperren, die der andere Thread bereits gesperrt hat. Infolgedessen stößt jeder Thread auf einen Fehler und bricht die Ausführung ab.

Mehrfachverarbeitung

Beim Multiprocessing werden mehrere Prozesse für mehrere Aufgaben mit eigenem Speicherplatz und eigenen Ressourcen ausgeführt . Prozesse können über Inter-Process-Communication (IPC) miteinander kommunizieren, sie können jedoch nicht direkt auf den Speicher des anderen zugreifen. Multiprocessing ist leistungsfähiger als Threading, verursacht jedoch höhere Kosten, da separate Prozesse erstellt und verwaltet werden müssen.

IPC

IPC ist ein Begriff, der für „Inter-Process Communication“ steht und sich auf die Techniken bezieht, die Betriebssysteme verwenden, um verschiedenen Prozessen die Kommunikation untereinander zu ermöglichen.

In einem modernen Betriebssystem können mehrere Prozesse gleichzeitig ausgeführt werden und ihre eigene Aufgabe mit einem anderen Speicherplatz und einer anderen Ressource ausführen. Es gibt jedoch Situationen, in denen diese einzelnen Prozesse Daten austauschen oder miteinander kommunizieren müssen. IPC bietet dafür eine Möglichkeit.

Asynchrone Programmierung

Bei der asynchronen Programmierung wird ein einzelner Thread verwendet, um mehrere Aufgaben gleichzeitig zu erledigen, indem er sie nach Bedarf stoppt und neu startet. Dies geschieht typischerweise mithilfe von Coroutinen, die kooperatives Multitasking ermöglichen. Die asynchrone Programmierung eignet sich ideal für I/O-gebundene Aktivitäten, bei denen das Programm viel Zeit damit verbringt, auf den Abschluss von Eingabe-/Ausgabeprozessen zu warten.

Wenn Sie beispielsweise eine Datei öffnen möchten, wird Ihr Programm fortgesetzt, während die Datei geöffnet wird (es sei denn, andere Aufgaben müssen die Datei öffnen).