Tom: Was ist eine Callback-Funktion

Beitrag lesen

Hello,

Multithreading != Callbacks! Ich weiß wirklich nicht, woher Du das hast...

Na, sei doch ehrlich. Du bist Dir so sicher, dass Du es in Wirklichkeit gar nicht wissen willst :-)

Außerdem habe ich auch nicht behauptet, dass Callback == Multithreading ist. Lies doch nochmal genau.

Aber wie wäre es mit "Internet"?  http://www.it-visions.de/glossar/alle/4860/Callback.aspx
oder mit "Vorlesung Echtzeit-Programmierung"?

Ich muss zugeben, dass Du mich mit dieser Absolutheit, in der Du hier antwortest, auch selber unsicher gemacht hast. Ist auch laaange her. Ich bin nun extra auf den Dachboden gestiegen, um die alten Unterlagen herauszuholen.

Der Name "callback function" kommt aus der frühen "Echtzeit-Programmierung". Er bezeichnet eine (damals "speicherresidente") Funktion, die beim EZOS zusammen z.B. mit der Anforderung an ein Device oder dem Aufruf eines Subsystems angemeldet wird, um das aufrufende Programm im Antwortfall (wenn also ein Ergebnis oder eine Meldung, also ein _Ereignis_ vorliegt) "zurückzurufen". Das aufrufende Programm läuft nach Erhalt der Quittung für die Registrierung sofort weiter.

Dies geschieht insbesondere bei Warteaufrufen mit explizitem Warten, aber auch bei sonstigen "nicht blockierenden Aufrufen".

Bei einem Warteaufruf mit implizitem Warten (synchroner Zugriff) wartet das aufrufende Programm direkt auf die Rückkehr und die Ergebnisse des aufgerufenen Prozesses. Dieser benötigt dann also keine Callback Funktion.

In dem von Dir genannten Kontext wird die Bezeichnung "Callback Funktion" eigentlich ausschließlich anstelle "Methode mit später Bindung" verwendet. Da hat er mMn fast keine Berechtigung. Die genannten PHP-Funktionen führen mWn alle nur implizite Warteaufrufe durch, wenn überhaupt.

Eine Berechtigung für "Callback" würde ich noch bei JavaScript sehen. Der Browser werkelt da munter vor sich hin und beim Eintritt eines bestimmten Ereignisses wird eine vorher registrerte Funktion aufgerufen. Diese unterbricht in dem Moment das "Hauptprogramm" (Beispiel: Popup mit focus(self)).
Da der Browser verschiedene Teilprozesse "gleichzeitig" durchführen kann, ist z.B. AJAX möglich.

Ich sehe hier keinen Grund, warum man die Herkunft von "Callback Funktion" nicht erwähnen sollte, auch wenn heute meistens nur noch der Wechsel zwischen unterschiedlichen Programmlayern damit gemeint ist.

Die Applikation meldet bei ihrem OS (oder zumindest einem niedrigeren Level) eine eigene Funktion an, die dann vom OS aufgerufen wird. Die Applikation wird also "zurückgerufen". In sofern stimmt es dann noch, ist aber nur die halbe Wahrheit.
Wenn es sich nur um synchrone  (blockierende) Aufrufe handelt, ist die Bezeichnung "Callback Function" mMn aber fehl am Platze.

Harzliche Grüße
aus dem verschneiten Sankt Andreasberg
und Frohe Weihnachtszeit

Tom

--
Nur selber lernen macht schlau