Embedded 如何在嵌入式实时环境中使用D?
对于所有熟悉的人来说,如何在嵌入式实时环境中使用它?我知道它的原始设计不是针对实时嵌入式环境的,但这个问题更多的是关于如何实现实时功能 语言的哪些结构是不可或缺的 你认为哪些结构会成为问题 有人在嵌入式系统中成功地使用过它吗Embedded 如何在嵌入式实时环境中使用D?,embedded,d,Embedded,D,对于所有熟悉的人来说,如何在嵌入式实时环境中使用它?我知道它的原始设计不是针对实时嵌入式环境的,但这个问题更多的是关于如何实现实时功能 语言的哪些结构是不可或缺的 你认为哪些结构会成为问题 有人在嵌入式系统中成功地使用过它吗 任何其他想法或建议都很好。D实际上不适合在实时应用程序中使用,主要是因为D的某些语言功能依赖于它的垃圾收集器,而D的垃圾收集器是不可预测的,并且会偶尔暂停您的程序以收集垃圾 垃圾收集不是万灵药。有一些缺点: 集合运行时是不可预测的,因此程序可以任意暂停 集合运行所需的时间
任何其他想法或建议都很好。D实际上不适合在实时应用程序中使用,主要是因为D的某些语言功能依赖于它的垃圾收集器,而D的垃圾收集器是不可预测的,并且会偶尔暂停您的程序以收集垃圾 垃圾收集不是万灵药。有一些缺点:
- 集合运行时是不可预测的,因此程序可以任意暂停李>
- 集合运行所需的时间没有限制。虽然在实践中速度非常快,但这无法保证李>
- 收集过程中,除收集器线程外的所有线程都必须停止李>
您仍然可以在没有垃圾收集器的情况下使用D(通过手动管理内存,如在C/C++中),这将阻止您使用某些语言功能,如关联数组和库函数,这些函数在内部分配内存而不释放/返回对内存的引用。D在许多不依赖于内存管理的领域(如元编程)仍然表现出色。实时更多的是保证性能,而不是“实时”性能。因此,有两种可能性
- 如果您不需要依赖于GC的库,请避免使您的应用程序/库依赖于它。要做到这一点,请始终确保有不受控制的分配,最好在应用程序的实际运行期间根本没有分配(预先分配)
- 在其他语言中也有对实时GC的研究。但这并不是小事,可能会导致比您愿意为担保支付的费用更多的减速。要求GC的实现使任何操作所花费的时间都有上限,编译器的实现使其能够通过插入屏障来提供帮助(非RT移动GC也需要)