主要内容

可重入代码

可重入代码是一个可重用的编程程序,多个程序可以同时使用。操作系统和其他系统软件,使用多线程处理并发事件使用可重入的代码。在并发环境中,多个线程或进程可以同时尝试读和写静态数据。因此,共享代码,使用持久或静态数据是很困难的。可重入代码不包含静态数据。调用程序保持其状态变量并将其传递到函数。因此,任何数量的线程或进程可以共享一份可重入的例行公事。

你想要时生成可重入的代码:

  • 在多线程环境中部署代码。

  • 使用一个算法与持久数据属于不同的进程或线程。

  • 编译代码,使用函数变量太大,以适应在堆栈上。

如果你不指定可重入的代码,MATLAB®编码器™生成的代码使用静态分配的内存:

  • 函数变量太大,以适应在堆栈上

  • 全局变量

  • 持续的变量

如果生成的代码使用静态内存分配这些变量,你不能部署环境中生成的代码,需要可重入的代码。如果你不能调整静态内存分配大小,生成的代码会导致静态内存大小溢出。

当你生成可重入的代码,MATLAB编码器创建输入数据结构:

  • 函数变量太大,以适应在堆栈上

  • 持续的变量

  • 全局变量

然后您可以动态地分配内存这些输入结构。使用动态内存分配意味着您可以部署的代码可重入环境。

要部署生成的代码,您必须创建一个主要功能:

  • 包含头文件primary_function_name. h。

  • 全局内存分配结构分配内存primary_function_nameStackData

  • 如果该算法使用持久或全局数据,全球结构分配内存primary_function_namePersistentData

  • 调用这些函数:

    • primary_function_name_initialize

    • primary_function_name

    • primary_function_name_terminate

当你用MATLAB函数转换为C / c++库函数或C / c++执行,MATLAB编码器生成两个管家功能。调用这些辅助函数的代码中调用生成的C / c++函数。有关更多信息,请参见生成部署代码

相关的话题