VxWorks对象--如任务、信号量、消息队列、看门狗时钟--既可以静态实例化亦可以动态实例化,静态实例化提高了性能。有特定的C宏来静态实例化内核对象。
静态实例化,指的是对象在编译时被声明(使用特定的VxWorks宏),通常是全局对象。因此在编译时分配了内存,而不需要在运行时分配。对象可以在启动初始化时直接获得。相对静态实例化,动态实例化涉及到运行时分配,并在使用前初始化,在删除时需要删除对象,并释放系统内存等,通常使用malloc和new来进行。使用动态实例化,必须考虑内存不足,另外,性能更差。
可以被静态实例化的内核对象:任务、信号量、消息队列、看门狗时钟。
静态实例化的代码大小:
编译时声明的对象并不占用可执行文件、VxWorks映像或存储介质的任何空间。如果只声明而没有初始化,则编译器将数据存放在bss段。
静态实例化的好处:
1,访问更快,更准确;2,应用程序逻辑简单;3,对象静态实例化正常情况下不会失败;
4,可以移除动态内存分配模块,使VxWorks内核更小。
静态初始化提供了更好的性能和优势。如果对象永远不会被删除,则尽量使用静态实例化。静态实例化应该只用于内核应用程序,而不应该在RTP中使用。