2009-07-11 56 views
15

对于所有熟悉D programming language的人员,如何在嵌入式实时环境中使用它?我明白,它的原创设计并非针对实时嵌入式环境,但这个问题更多的是关于如何实现实时功能。你会如何在嵌入式实时环境中使用D?

该语言的哪些构造是不可或缺的?

你看到哪个构造会成为问题?

有没有人在嵌入式系统中成功地使用它?

任何其他的想法或建议将是伟大的。

回答

12

D并非真正用于实时应用程序,主要是因为D的某些语言功能依赖于其垃圾回收器,并且D的垃圾回收器不可预知,并且会偶尔暂停程序以收集垃圾。 Quoting

垃圾收集不是万能的。有一些缺点:

  • 集合运行时不可预测,所以程序可以任意暂停。
  • 集合运行所花费的时间不受限制。虽然在实践中很快,但这不能得到保证。
  • 集合正在进行时,除收集线程以外的所有线程都必须暂停。

仍然可以使用d没有垃圾收集器(通过手动地管理存储器,如在C/C++) - 这将阻止您使用某种语言的功能,如关联数组,和库函数在内部分配内存而不释放/返回对它的引用。 D仍然在许多不依赖于内存管理(如元编程)的领域表现出色。

+1

我明白它的原意并非针对实时应用程序,但问题更多的是如果您要使其实时工作。我会更多地澄清这个问题。感谢你的回答。我忘记了图书馆对GC的依赖程度。 – 2009-07-11 16:35:46

5

实时更关心保证而非“实时”性能。因此有两种可能性;

  • 如果你不需要GC相关的库,只是避免让你的应用程序/库依赖于它。通过始终确保您有不受控制的分配,并且最好在应用程序的实际运行期间根本没有分配(预先分配)。
  • 对其他语言的实时GC进行了研究。然而,这并不是微不足道的,而且可能会导致比您愿意为您的担保支付更多的风险。要求是GC的实现使得在任何操作上花费的时间都有上限,编译器的实现可以通过插入障碍来帮助(非RT移动GC也需要)。
相关问题