调用没有持久数据或全局数据的可重入代码(UNIX唯一的)
这个示例需要POSIX线程(pthread)库,因此只能在UNIX上运行®平台。这是一个简单的多线程示例,不使用持久数据或全局数据。两个线程调用MATLAB®函数matrix_exp
使用不同的输入数据集。
提供主要功能
若要调用可重入代码,请提供主要
功能:
包括头文件
matrix_exp.h
.对于每个线程,为堆栈数据分配内存。
调用
matrix_exp_initialize
管家功能。有关更多信息,请参见部署生成的代码.调用
matrix_exp
.调用
matrix_exp_terminate
.释放用于堆栈数据的内存。
在这个例子中,c
包含:
#include |
生成可重入C代码
要生成代码,请在MATLAB命令提示符下运行以下脚本。
%此示例只能在Unix平台上运行,如果~isunix错误('此示例需要pthread库,并且只能在Unix上运行。');创建一个代码生成配置对象cfg = code . Config ('exe');启用可重入代码生成cfg。MultiInstanceCode = true;设置邮政编码生成命令为'setbuildargs'函数cfg。PostCodeGenCommand = 'setbuildargs(buildInfo)';编译代码-config cfg main.c matrix_exp。M -report -args ones(160,160) |
这个脚本:
如果示例不在UNIX平台上运行,则生成错误消息。
创建用于生成可执行文件的代码配置对象。
使
MultiInstanceCode
生成可重用、可重入代码的选项。使用
PostCodeGenCommand
选项,将邮政编码生成命令设置为setbuildargs
函数。此函数设置-lpthread
标志,以指定生成包含pthread库。正在编译的示例需要pthread支持。金宝app-lpthread标志请求将pthread库%包含在构建linkFlags = {'-lpthread'};addLinkFlags (buildInfo linkFlags);
有关更多信息,请参见构建过程定制.
调用
codegen
有以下选项:配置
以传入代码生成配置对象cfg
.c
将此文件包含在编译中。报告
创建代码生成报告。arg游戏
指定具有类、大小和复杂度的示例输入。
检查生成的代码
codegen
生成头文件matrix_exp_types.h
,它定义了matrix_expStackData
全球结构。该结构包含的局部变量太大,无法装入堆栈。
/* * matrix_exp_types.h * *函数'matrix_exp'的代码生成* */ #ifndef __MATRIX_EXP_TYPES_H__ #define __MATRIX_EXP_TYPES_H__ /*包含文件*/ # Include "rtwtypes.h" /*类型定义*/ #ifndef typedef_matrix_expStackData #定义typedef_matrix_expStackData typedef struct {struct {double F[25600];双Y [25600];双X [25600];} f0;} matrix_expStackData;#endif /*typedef_matrix_expStackData*/ #endif /*代码生成结束(matrix_exp_types.h) */ |
运行代码
使用以下命令调用代码:
系统(“。/ matrix_exp”)