静态内存分配的属性

下表列示了一些使您能够为生成的代码配置静态分配的属性。在高于个别实例的级别上设置其中任意属性都可为所有实例设置缺省值。例如,在组件级别上设置类属性可为所有类实例设置缺省值。在所有情况下,如果实际实例数超出最大声明数,则行为未定义。

属性 主题和元类 描述
BaseNumberOfInstances <lang>_CG::Class

CG::Event

指定为下列任何一项分配的本地堆内存池的大小:
  • 类的实例(<lang>_CG::Class
  • 事件的实例(<lang>_CG::Event

此属性提供了对硬实时和关键安全系统中的静态体系结构的支持,而未在运行时提供内存管理能力。事件的所有实例都在初始化期间以动态方式进行分配。

在分配之后,线程的事件队列大小保持不变。

触发式操作将使用为事件定义的属性。

内存池耗尽后,将分配由 AdditionalNumberOf
Instances
属性指定的附加内存容量。

类的内存池只能与平面状态图实现方案配合使用。

AdditionalNumberOfInstances <lang>_CG::Class

CG::Event

指定当前池为空时将为其分配内存的实例或事件的数量。
ProtectStaticMemoryPool CG::Class/Event 确定是否使用操作系统互斥来提供线程安全性,从而保护对已分配内存池的访问。
MaximumPendingEvents CG::Class 指定可以在活动类的事件队列中同时暂挂的最大事件数。

请参阅“特征”窗口的相应属性选项卡上为每个属性提供的定义。

操作系统互斥不应用于在中断处理程序中生成事件的情境。将 ProtectStaticMemoryPool 属性的值设置为 Cleared,以不使用互斥。确保内存池是否非线程安全由您自行决定。动画框架不必遵循此限制。

框架文件包含动态和静态分配都可访问的代码。实际使用基于生成的代码。GENgen 宏的使用对于两种方式都相同。

通过 <lang>_CG:Relation::ImplementWithStaticArray 属性使用静态数组实现固定和绑定关系隐式使用了不同于初始化的静态分配。


反馈