Asynchrone Programmierung
-
Guten Abened,
ich habe mal ein paar Fragen, bzgl. der asynchronen Programmierung:1. asynchron bedeutet ja "nicht gleichzeitig". Das bedeutet für micht so viel, wie "quasi-parallel". Wenn ich aber asynchron und quasi-parallel in Google eingebe, macht es nicht den Anschein, dass asynchron "quasi-parallel" bedeutet. Wo liegt den der Unterschied zwischen den beiden?
2. Wenn ich z.B. ein Multicore-System habe und ein Programm entwickle, das aus mehreren Threads besteht. Kann es sein, dass ein Thread auf dem einen und ein anderer Thread auf einem anderen Core abgearbeitet werden, ich also wirkliche Parallelität habe? Oder kümmert sich immer nur 1 Core um 1 Prozess?
Danke schonmal.
-
Ein Prozess kann selbstverständlich mehrere Kerne gleichzeitig nutzen.
-
_matze schrieb:
Ein Prozess kann selbstverständlich mehrere Kerne gleichzeitig nutzen.
OK danke. Somit kann es auch passieren, dass zwei oder mehrere Threads ein Semaphore gleichzeitig als frei erkennen?
-
async schrieb:
Somit kann es auch passieren, dass zwei oder mehrere Threads ein Semaphore gleichzeitig als frei erkennen?
Grundsätzlich ja, aber es gibt Methodend as zu verhindern. Es gibt Instruktionen mit denen das prüfen und setzen atomar in einem Rutsch gemacht wird. Gibt es in verschiedene Arten wie test and set, fetch and add und compare and swap.
-
Quasi-Parallelität und Asynchronität sind verschiedene Sachen.
Ersteres ist das simulieren von Gleichzeitigkeit (etwa bei Multitasking-Betriebssystemen). Letzteres bedeutet die Abwesenheit von oberen Schranken für die Ausführungsgeschwindigkeit von Prozessen, Übertragungszeit von Nachrichten zwischen zwei Prozessen und Clock-Drift-Rate in einem verteilten System.