软件模块中程序调用的方式

软件模块的关系,从总体上看,有上层软件模块和下层软件模块之分。一般有三种调用方式:

  • 同步调用
  • 带有回调的调用
  • 异步调用

同步调用

同步调用时最常用的方式,由上层模块调用下层模块。在调用过程中,上层模块将被阻塞,直到下层模块执行完毕并返回。在方向上,同步调用是单向的调用方式。


在图中所示的同步调用方式中,调用方式为 A->B 。即上层模块的函数A调用下层模块的函数B,在调用过程中函数A被阻塞,当函数B返回之后,函数A继续执行。在B执行的过程中,A不能得到B的执行信息。同步调用是一种最简单也是最常用的调用方式,在大多数的C语言库函数调用中,都是这种方式。

带有回调的调用

带有回调的调用方式是一种双向调用模式,在这种方式中,下层模块的函数在被调用的时候,将会调用上层模块的某个函数。


在带有回调的调用中,调用方式为A->B->C。位于上层模块的函数A调用下层模块的函数B,在B的执行过程中,将调用上层模块的函数C。在这里函数C被称为回调函数,他是被下层模块所调用的上层模块函数。B函数执行过程中,可以通过调用函数C将信息返回给上层模块。对于上层模块,函数C至少有两个作用,其一是监视函数B的运行状态,其二是干预函数B的运行。在这种方式中,本质上的关系依然是上层调用下层,由于增加了回调函数C,这样可以在调用的过程中进行交互。

异步调用

异步调用一般基于消息或时间,下层模块接受上层模块的命令,当发生某个时间的时候,下层模块将调用上层模块的函数。异步调用方式一般基于回调函数的注册机制。


在异步的调用方式总,调用方式为A->B立即返回,当发生某个事件后,进行D->C的动作。本来上层模块的函数A调用下层模块函数B的时候,只是一个简单的同步调用,嗲用那个完成后立即返回。在A->B的调用过程中,可以向下层模块注册某些信息,例如回调函数C,当下层模块的某个事件发生的情况下,调用上层模块的函数C。


在带有回调的调用和异步调用中,都涉及回调函数的概念。在C语言中回调函数的基础是函数类型的指针。


  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值