我即将开始一个新的实时项目.现在有(再次)关于c vs c ++的争论.是的,我读到了关于Linus和所有其他线程的SO.
首先,我倾向于使用C,但后来我读到了C++包含C的答案.然后我在互联网上阅读了" 嵌入式C++ ".根据这篇文章,EC++已经死了.但我认为C++的一种"功能指南"可能有助于管理C++的复杂性.
所以现在我问自己(和你):
我们的软件是实时运行的,在用示波器花了几周之后,我不得不在我们的硬件(pentium M之类)现代C++上承认它的所有堆分配由它的map和deques的default_allocator完成,并且所有由shared_ptrs完成的锁定,都会通过我们可以提出的每个延迟/抖动/确定性测试.
操作系统设置(如禁用C2状态或调整驱动程序的内核线程优先级)比切换到内存池分配器或任何其他经典RT编程方法具有数量级更强的影响.当然,我们可以使用严格规范的C从相同的硬件中提取更多的微秒,但是开发和维护该软件的成本会使稍微更新的控制器的成本相形见绌.
我要说的主要指导方针是获得良好的数字范围.