异步事件回调机制原理探索

软件组件之间,函数之间的调用分为:同步调用,函数指针形式的同步回调,异步调用。前面两种很简单无需多言,这里只探索下异步调用。

自定义的异步事件回调机制:

可以在自己的应用程序中,先注册事件和事件对应的回调函数(回调函数可以是函数指针法,虚函数方法的方式);自己程序中每帧检测事件是否发生或者条件是否满足,满足的时候就进入回调函数。如果这样的检查是在同一个线程中那么就是同步的延迟调用,如果是在子线程中就是异步调用,但是这样的性能还是比较差的,除非不得以,否则还是用OS的异步回调机制性能高。

OS层面的异步事件回调机制:

linux下的异步回调机制:

1.异步事件的注册:会在内核里面产生一个事件放置到事件队列(属于内核事件或者线程/进程事件队列,加入事件select,poll是O(n)算法效率,epoll是O(1)算法效率因为使用了mmap不需要从用户空间拷贝到内核空间,其它事件类似);该事件会记录当前线程/进程标识号,关联的内核文件设备驱动事件,还可能需要一个回调函数

2.异步事件的检测:检查时候会查询内核中的线程/进程事件队列(

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值