Ultimamente tenho trabalhado com Node JS, e os conceitos de processamento assíncrono do javascript em uma event machine como a V8 são espetaculares no navegador e nativo com Node JS. Abordando apenas o conceito de callback, onde uma função A recebe como parâmetro uma outra função B que será invocada após ou durante a execução de A. Abaixo está um código que fiz.

#include <stdio.h>

void foo(int);
void testCallback(int, void (*)(int));

int main(int argc, char **argv){

  testCallback(1000000, &foo);
  printf("[Main function]: I'm main function!\n");
    testCallback(100000, &foo);

  return(0);
}

void foo(int num){
  printf("[foo function]: I'm callback!, Parameters[ num=%d ]\n",num);
}

void testCallback(int num, void (*callback)(int)){
   int i;

   for(i=0; i < num; i++);

  return(callback(num));
}