Call back routine
In der Learning OpenCV
Buch, kam ich zu dem Begriff callback
, und manchmal mit routine
als callback routine
.
Was meinen wir, wenn wir sagencallback
?
Dank.
- Callback ist eine elegantere Möglichkeit als polling für immer. Es ist Teil der event-driven-programming-Modell.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Was ist eine Callback Funktion?
In einfachen Worten, ein Callback-Funktion ist eine Funktion, die nicht explizit aufgerufen, die durch den Programmierer. Statt dessen gibt es einen Mechanismus, der ständig wartet auf Ereignisse, die auftreten, und es wird rufen Sie die ausgewählten Funktionen, die in Reaktion auf bestimmte Ereignisse.
Dieser Mechanismus wird normalerweise verwendet, wenn eine operation(Funktion) dauert eine lange Zeit für die Ausführung und der Aufrufer der Funktion nicht möchten, warten Sie, bis der Vorgang abgeschlossen ist, aber will mitgeteilt werden, der das Ergebnis der operation. In der Regel, Callback-Funktionen, die helfen, die Umsetzung einer solchen asynchronen Mechanismus, wobei die Anrufer-Register zu bekommen inimated über das Ergebnis der zeitaufwändigen Bearbeitung und kontinuierliche andere Operationen, während zu einem späteren Zeitpunkt, bekommt der Anrufer das Ergebnis informiert.
Ein Beispiel aus der Praxis:
Windows-Ereignis-Verarbeitung:
praktisch alle windows-Programme, richten Sie eine Ereignis-Schleife, das macht das Programm reagiert auf bestimmte Ereignisse (e.g-Taste drückt, wählen Sie ein Kontrollkästchen, Fenster, Fokus erhalten) durch den Aufruf einer Funktion. Die praktische Sache ist, dass der Programmierer kann festlegen, welche Funktion aufgerufen wird, wenn (sagen wir) eine bestimmte Taste gedrückt wird, auch wenn es nicht möglich ist anzugeben, Wann die Taste gedrückt werden. Die Funktion, die aufgerufen wird, bezeichnet man als callback.
Eine source-Code-Abbildung:
Oben würde Folgendes ausgegeben:
Hoffe, das hilft!
Beachten:
Importiert diese Antwort aus einer meiner alten Antworten hier.
functors
sind gut, aber ich sehe nicht, wiefunction pointers
so schlecht, wenn die Absicht ist es, zu verstehen, Rückrufe?"Ich weiß es nicht nennen bei mir, aber das system (oder einige andere) es nennen werde". Das ist Rückruf.
Meinen Sie, dass übergeben Sie einen Zeiger auf ein Verfahren zur
OpenCV
. Dies wirdcalled back
wenn etwas passiert. Dies kann z.B. gesehen beicvSetMouseCallback()
. Die Funktion verweist der Zeiger wird immer aufgerufen, wenn die Maus bewegt wird."Routine" in diesem Kontext ist das gleiche wie "Funktion". Der Begriff geht zurück zu älteren Sprachen (wie Fortran), die einen Unterschied gemacht zwischen Funktionen, die einen Wert zurückgibt, und (sub -) Routinen, die nicht.
"Callback" ist eine Technik, bei der Sie einen Zeiger auf eine Ihrer Funktionen ("Routinen"), um das system/API/framework und die system/API/framework nennen würde es zurück, wenn es sich anfühlt, dies zu tun. So eine callback-routine, oder einfach ein callback ist eine Funktion, die vorgesehen ist für eine solche Nutzung.
In streng Objekt-Sprachen (wie Java) Sie nutzen in der Regel die Zuhörer und die Delegierten für, die. Die callback-Technik, in seiner C++ - form, hat den Vorteil, dass es kompatibel mit nicht-Objekt-orientierten Sprachen wie klassisches C.
EDIT: der Microsoft C run-time Bibliothek, diese Technik wird verwendet, für qsort () - Funktion. Die
compare
argument ist ein Funktionszeiger auf eine callback-routine. Es heißt durch die RTL-Wann immer zwei array-Elemente verglichen werden. Es ist nicht ein typisches Beispiel, 'Ursache, die alle Aufrufecompare
passieren, bevor die qsort () - Aufruf zurückgegeben wird.In Win32-API, Rückrufe sind ein Grundnahrungsmittel. Die Fenster-Prozedur ist ein gutes Beispiel - übergeben Sie einen Zeiger in der Struktur WNDCLASS, ruft das system das Verfahren zurück, wie die Nachricht ankommen. In diesem Fall wird die callback-routine aufgerufen wird, lange nachdem die RegisterClass() - für die gesamte Lebensdauer des Fensters.
In POSIX/Unix/Linux -, signal-processing-Funktion ist ein Beispiel. Sehen Sie das signal() syscall Beschreibung.
Nach dem Hollywood-Prinzip "Don' T call us, we call you", ein callback ist eine Referenz an eine Funktion übergeben in eine andere Funktion.
Wird der callback aufgerufen werden, die von der Funktion ist es gegeben, zum Beispiel, wenn Daten verfügbar sind oder bestimmte Verarbeitungsschritte durchgeführt werden müssen.
Callback-Funktionen sind Funktion, die nicht explizit aufgerufen, solche Funktionen automatisch aufgerufen, nachdem ein Ereignis Auftritt, zum Beispiel nach drücken von "Strg+c" SIGINT-signal generiert, so wird automatisch handler ausgeführt wird.