编译的Simulink-Simulation是多线程的吗?
Is compiled Simulink-Simulation multithreaded?
编译的(使用 simulink-coder-toolbox)simulink-model 运行 是多线程还是只有一个 thread/process?据我所知,模拟是单进程,如果你没有并行工具箱,那么多线程呢?
我很好奇 simulink 如何在一个模型中处理仿真时间的不同步长?例如,如果模型中有 2 条具有不同步长的平行路径(1 x 复杂工作,步进时间为 0.1s,100 x 光工作,步进时间为 0.001s),请一个接一个或以某种方式执行这些路径 运行与线程并行以节省执行时间?
Simulink Coder 生成非常普通的普通 C 代码,并默认编译它。代码本身没有固有的多线程或并行性。
模型中不同的采样率被赋予给定的任务id,代码中的每一步都将执行与当前正在执行的id相关联的代码。当部署在 RTOS.
上时,任务也可以分成不同的文件,以便更容易地执行多任务
多个任务的执行方式在很大程度上取决于目标 OS 和编译过程。如果您正在编译为非实时 OS(例如 Windows)部署的共享库或 exe,那么您将无法进行任何多任务处理。如果您有一个 RTOS,以适当的方式生成代码,并适当地编译,那么您将拥有多任务处理能力。
文档中讨论了它的工作原理:Model Single-Core, Multitasking Platform Execution
您可以访问代码和构建文件(并且可以根据需要修改两者。)查看正在发生的事情的最简单方法是查看该代码。
编译的(使用 simulink-coder-toolbox)simulink-model 运行 是多线程还是只有一个 thread/process?据我所知,模拟是单进程,如果你没有并行工具箱,那么多线程呢?
我很好奇 simulink 如何在一个模型中处理仿真时间的不同步长?例如,如果模型中有 2 条具有不同步长的平行路径(1 x 复杂工作,步进时间为 0.1s,100 x 光工作,步进时间为 0.001s),请一个接一个或以某种方式执行这些路径 运行与线程并行以节省执行时间?
Simulink Coder 生成非常普通的普通 C 代码,并默认编译它。代码本身没有固有的多线程或并行性。
模型中不同的采样率被赋予给定的任务id,代码中的每一步都将执行与当前正在执行的id相关联的代码。当部署在 RTOS.
上时,任务也可以分成不同的文件,以便更容易地执行多任务多个任务的执行方式在很大程度上取决于目标 OS 和编译过程。如果您正在编译为非实时 OS(例如 Windows)部署的共享库或 exe,那么您将无法进行任何多任务处理。如果您有一个 RTOS,以适当的方式生成代码,并适当地编译,那么您将拥有多任务处理能力。
文档中讨论了它的工作原理:Model Single-Core, Multitasking Platform Execution
您可以访问代码和构建文件(并且可以根据需要修改两者。)查看正在发生的事情的最简单方法是查看该代码。