如何在C-S函数之间共享C结构? [英] How to share a C struct among C S-functions?
本文介绍了如何在C-S函数之间共享C结构?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
推荐答案
我已经成功地实现并测试了动态链接库的思想(即,将所有模型参数收集到动态链接库中的结构中--加上任何必要的计算--并将其链接到其他C-S-函数)。Simulink是一个单独的进程,我相信模拟是一个单独的线程(如果不是这样的话,有一些方法可以使它成为线程安全的)。
具有来自DLL的模型参数的结构充当单例(每个模拟仅实例化一次,并在其他S函数之间共享)。
更新(MathWorks的部分回复):
Simulink的模拟部分始终是单线程的。因此,共享DLL不存在线程安全问题。
不同S函数块的全局变量将共享相同的内存位置。这意味着将为所有Simulink加载共享库的单个实例。因此,加载共享库的所有S-Function实例都将引用相同的共享库和数据。或者,您也可以考虑使用数据存储块来实现全局变量。这将需要从每个S功能到适当的数据存储块的信号连接。但不需要S函数之间的连接。
这篇关于如何在C-S函数之间共享C结构?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文