异步回调函数和多线程

C语言异步函数回调怎么实现,跟多线程有什么区别,请教各位大神,有个源码指导,多谢


#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>//Windows系统专用

typedef void * (*PFUNC)(void *);

PFUNC func;

void * SyncACallBack(void * p){
  printf("异步多线程!!!\n");
  Sleep(100);//这个线程累了!!
  return NULL;
}

void RegistCallBack(PFUNC pfun){
    func = pfun;
}

void CheckCallBack(int i){
    if(i > 75){
        pthread_t ufunc;
        pthread_create(&ufunc,NULL,func,NULL);//异步调用
    }
}

int main(void){
    srand(time(0));
    RegistCallBack(SyncACallBack);
    while(1){
        CheckCallBack(rand()%100);
        printf("主线程运行中!!\n");
    }
    return 0;
}

输出:
主线程运行中!!
异步多线程!!!
主线程运行中!!
异步多线程!!!
主线程运行中!!
主线程运行中!!
主线程运行中!!
主线程运行中!!
主线程运行中!!
主线程运行中!!
主线程运行中!!
主线程运行中!!
主线程运行中!!
主线程运行中!!
主线程运行中!!
异步多线程!!!
主线程运行中!!
主线程运行中!!

本质上与多线程没什么区别,但是还有多进程异步回调通信,这个就比较复杂了,我也不了解。应该是windows函数CreateFile创建Port端口通讯,或者winsocket套接字传输数据吧

我也不确定我说的对不对哈,肯定有错误,如果您发现了,可以指正一下,毕竟我不常用异步调用,windows事件处理函数是普通的同步回调函数