编译的Simulink-Simulation是多线程的吗?

时间:2019-02-20 09:44:55

标签: multithreading simulink

已编译(使用simulink-coder-toolbox)的simulink-model是否运行多个线程或仅运行一个线程/进程?据我所知,如果您没有并行工具箱,那么仿真是一个单一的过程,但是多线程呢?

我很好奇simulink如何在一个模型中处理不同的仿真时间步长?例如,如果模型中有2条具有不同步长大小的并行路径(1 x复杂工作,步长为0.1s,100 x轻工作,步长为0.001s),则这些路径是一个接一个地运行还是以某种方式与线程并行节省执行时间?

1 个答案:

答案 0 :(得分:1)

Simulink Coder生成非常普通的原始C代码,并且默认情况下将其编译为此类代码。代码本身没有固有的多线程或并行性。

在给定任务ID的情况下,给模型提供了不同的采样率,并且代码的每一步都将执行与当前执行的ID相关的代码。任务也可以分成不同的文件,从而在部署到RTOS上时可以更轻松地执行多任务。

如何执行多个任务在很大程度上取决于目标OS和编译过程。如果要编译到部署在非实时操作系统(例如Windows)上的共享库或exe,则不会遇到任何多任务处理。如果您有RTOS,并以适当的方式生成了代码,并进行了适当的编译,那么您将具有多任务处理。

在文档中将对此进行讨论:Model Single-Core, Multitasking Platform Execution

您有权访问代码,并有权访问构建文件(并且可以根据需要修改两者。)查看正在发生的事情的最简单方法是查看该代码。

相关问题