在.net微框架中创建线程的开销是多少?

时间:2012-09-03 16:15:13

标签: performance .net-micro-framework netduino

我很好奇线程创建对运行.net微框架的netduino有什么影响。通常可以理解线程对它们有inherent overhead但是我想知道是否有人知道嵌入式环境中是否存在针对.net micro的优化,以及是否有人可以告诉我有关引擎盖下发生的事情的一些细节这里有一个线程(分配了多少内存,生成需要多少个周期等)。

1 个答案:

答案 0 :(得分:2)

根据我的经验,NETMF下每个线程的内存成本大约为1K。至于分配线程所需的时间,如果您正在考虑这样的问题,那么可能是时候对嵌入式系统的最佳实践进行一些阅读了。我不是在嘲笑你,有很多难以获得的知识可以帮助你节省心痛和麻烦。例如,线程的事情。如果您需要可靠性,您必须保证最大的资源需求。如果您要说“不超过5个线程”,那么您也可以在初始化过程中启动所有五个,并分配他们想要的所有资源。如果您不能这样做,那么您无法保证系统在负载下的稳定性。这样做的一个副作用是启动它们所需的时间与系统的响应性无关,尽管它确实会稍微影响启动时间。

上下文切换有开销。我不能给你量化的数字因为我从来不需要对它进行基准测试。 NETMF就是在金属上实现的;您很可能从SoC文档中获得一些信息,您可以从ATMEL下载。或者,如果你在netduino论坛上提问,克里斯可以告诉你袖手旁观。

如果这是一个家庭作业问题,请听取Hans的建议并查看源代码。如果您正在寻找构建某些东西并评估平台是否适合应用程序,那么我可能会感兴趣的是,在不同的线程上执行对时间敏感的事情时,我从未遇到过切换延迟,但我从不使用超过三个或四个线程其中一个以循环方式为许多逻辑进程(所有对时序不敏感的东西)提供服务。

再一次,长期稳定的关键是避免动态分配任何

显式编码循环的一个优点是您可以控制逻辑进程的序列。