Callback (προγραμματισμός)

Στον προγραμματισμό Η/Υ ένας callback είναι ένα κομμάτι εκτελέσιμου κώδικα που περνάει ως παράμετρος σε ένα άλλο μέρος του προγράμματος και αναμένεται να κάνει την εκτέλεση αυτού (call back) κάποια στιγμή. Η εκτέλεση όταν γίνεται αμέσως αυτό τότε ονομάζεται συγχρονισμένο callback και όταν γίνεται αργότερα λέγεται ασυγχρόνιστο callback. Η γενική ιδέα είναι να ορίσουμε μια συνάρτηση ή μια υπορουτίνα ως μια οντότητα την οποία την περνάμε ως παράμετρο σε κάποιο άλλο σημείο του προγράμματος.

Ο τρόπος που μπορεί να οριστεί ένα callback εξαρτάται από την γλώσσα προγραμματισμού. Στην C αυτό μπορεί να γίνει με ένα δείκτη συνάρτησης, στην C++11 μπορεί να ενσωματώνεται σε μια λάμδα έκφραση ενώ στην Ruby μπορεί να είναι ένα μπλοκ κώδικα. Επίσης στην C++ στην βιβλιοθήκη STL υπάρχει η δυνατότητα υλοποίησης callback με χρήση functors.

Παράδειγμα C 

#include <stdio.h>
#include <stdlib.h>

/* Η συνάρτηση παίρνει ως παράμετρο ένα δείκτη συνάρτησης / callback. */
void PrintTwoNumbers(int (*numberSource)(void)) {
    printf("%d and %d\n", numberSource(), numberSource());
}

/* Μια συνάρτηση callback */
int overNineThousand(void) {
    return (rand() % 1000) + 9001;
}

/* Μια δεύτερη συνάρτηση callback. */
int meaningOfLife(void) {
    return 42;
}

/* Καλούμε την PrintTwoNumbers() με τρία διαφορετικά callbacks. */
int main(void) {
    PrintTwoNumbers(&rand);
    PrintTwoNumbers(&overNineThousand);
    PrintTwoNumbers(&meaningOfLife);
    return 0;
}

Η έξοδος του προγράμματος είναι περίπου (εξαρτάται από την συνάρτηση δημιουργίας τυχαίων αριθμών rand):

 125185 and 89187225
  9084 and 9441
  42 and 42

Παραπομπές 

Προγραμματισμός