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事件处理函数是普通的同步回调函数