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

时间:2024-04-05 17:08:41

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

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

同步调用

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

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

在图中所示的同步调用方式中,调用方式为 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语言中回调函数的基础是函数类型的指针。


相关文章