15

对于所有熟悉D 编程语言的人,如何在嵌入式实时环境中使用它?我知道它的原始设计不是针对实时嵌入式环境的,但这个问题更多的是关于你将如何实现实时功能。

该语言的哪些结构是必不可少的?

您认为哪些结构会成为问题?

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

任何其他想法或建议都会很棒。

4

2 回答 2

12

D 并不是真正用于实时应用程序,主要是因为 D 的某些语言特性依赖于它的垃圾收集器,而 D 的垃圾收集器是不可预测的,并且会偶尔暂停你的程序以收集垃圾。报价

垃圾收集不是灵丹妙药。有一些缺点:

  • 集合何时运行是不可预测的,因此程序可以任意暂停。
  • 集合运行所需的时间是没有限制的。虽然在实践中它非常快,但不能保证这一点。
  • 在收集过程中,除了收集器线程之外的所有线程都必须停止。

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

于 2009-07-11T16:08:22.387 回答
5

实时更多的是关于保证而不是“实时”性能。因此,有两种可能性;

  • 如果您不需要 GC 依赖库,请避免让您的应用程序/库依赖它。通过始终确保您有不受控制的分配来做到这一点,最好在应用程序的实际运行期间根本没有分配(预先分配)。
  • There has been research into real time GC's in other languages. This is not trivial though, and may cause more slow downs than what you are willing to pay for your guarantees. The requirements are that the GC is implemented such that time spent on any operation has an upper bound, and that the compiler is implemented such that it can help by inserting barriers (would also be needed by a non-RT moving GC).
于 2009-07-11T20:07:11.890 回答