在嵌入式实时环境中如何使用D?

Jay*_*son 15 embedded d

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

哪种语言结构必不可少?

您认为哪些结构会出现问题?

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

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

Vla*_*eev 12

D并不是真正意味着在实时应用程序中使用,主要是因为D的某些语言功能依赖于它的垃圾收集器,并且D的垃圾收集器是不可预测的并且偶尔会暂停您的程序来收集垃圾.引用:

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

  • 当集合运行时,它是不可预测的,因此程序可以任意暂停.
  • 集合运行所需的时间不受限制.虽然在实践中它很快,但这不能保证.
  • 收集正在进行时,必须暂停除收集器线程以外的所有线程.

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

  • 您可以禁用GC std.gc.disable(),这将阻止垃圾收集器运行,直到std.gc.enable(). (8认同)

lar*_*ivi 5

实时更多的是关于保证而不是"实时"的表现.因此有两种可能性;

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