2009-07-11 57 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也需要)。
相關問題