42 Stimmen

Warum werden asynchrone Prozesse nicht synchron genannt?

Diese Terminologie verwirrt mich also ein wenig.

Unter "asynchroner" Datenverarbeitung versteht man die Ausführung verschiedener Prozesse in separaten Threads, was den Eindruck erweckt, dass diese Prozesse gleichzeitig ablaufen.

Dies entspricht nicht der Definition des Wortes "asynchron".

asynchronous
–adjective 
1. not occurring at the same time. 
2. (of a computer or other electrical machine) having each operation started only after the preceding operation is completed. 

Was verstehe ich hier nicht?

17voto

Greg B Punkte 14140

Das bedeutet, dass die beiden Threads nicht synchron laufen, d. h., sie laufen nicht beide auf der gleichen Zeitachse.

Ich glaube, dass Informatiker zu clever mit ihren Worten umgehen.

Synchronisation würde in diesem Zusammenhang bedeuten, dass beide Threads zur gleichen Zeit beginnen und enden. Asynchronität in diesem Sinne bedeutet, dass beide Threads frei sind, zu starten, auszuführen und zu beenden, wie sie es benötigen.

9voto

John Gietzen Punkte 47223

Das Wort "synchron" bedeutet, dass ein Funktionsaufruf synchronisiert mit einem anderen Ereignis.

Asynchron bedeutet, dass keine solche Synchronisierung stattfindet.

Es sieht so aus, als ob die Definition, die Sie dort haben, eigentlich die Definition für "gleichzeitig" oder so ähnlich sein sollte. Diese Definition sieht falsch aus.


PS:

Hier ist die Definition aus dem Wörterbuch:

asynchrone

  1. Nicht synchron, d. h. zu unterschiedlichen Zeiten.
  2. (Datenverarbeitung, einer Anfrage oder einer Nachricht), die es dem Client ermöglicht, mit der Bearbeitung fortzufahren.

Und das ist zufällig die genau das Gegenteil von dem, was Sie geschrieben haben.

2voto

Jiaaro Punkte 70598

Ich würde vermuten, dass es daran liegt, dass sie nicht synchronisiert sind ;)

Mit anderen Worten: Wenn ein Prozess angehalten oder beendet wird oder auf etwas wartet, macht der andere weiter.

2voto

Jason Williams Punkte 55292

Ich denke, dass die meisten Antworten hier einen etwas anderen Blickwinkel haben.

Asynchron bedeutet "nicht zur gleichen Zeit stattfindend".

Im speziellen Fall des Einfädelns:

  • Synchron bedeutet "führe diesen Code jetzt aus".
  • Asynchron bedeutet "diese Arbeit in einem anderen Thread einreihen die zu einem unbestimmten Zeitpunkt in der Zukunft ausgeführt werden sollen "

Dies ermöglicht es Ihnen in der Regel, "zwei Dinge auf einmal zu tun", z. B. aus folgenden Gründen

  • ein Thread wartet gerade (z.B. auf das Eintreffen von Daten an einer seriellen Schnittstelle) und befindet sich daher im Ruhezustand
  • Sie haben mehrere Prozessoren, so dass die beiden Threads gleichzeitig laufen können.

Aber auch bei 128 Prozessorkernen ist der Fall derselbe: Die Arbeit wird "irgendwann in der Zukunft" (wenn auch vielleicht in naher Zukunft) und nicht "jetzt" ausgeführt.

1voto

Rytmis Punkte 30606

Ihre zweite Definition ist hier hilfreicher:

2. [...] having each operation started only after the preceding operation is completed.

Wenn Sie einen asynchronen Aufruf tätigen, kann es sein, dass dieser Aufruf nicht abgeschlossen ist, bevor der nächste Vorgang gestartet wird. Bei einem synchronen Aufruf ist dies der Fall.

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