【问题标题】:What is the overhead for thread creation in the .net micro framework?在 .net 微框架中创建线程的开销是多少?
【发布时间】:2012-09-03 16:15:13
【问题描述】:

我很好奇线程创建对运行 .net 微框架的 netduino 有何影响。人们普遍认为线程对它们有一个inherent overhead,但我想知道是否有人知道嵌入式环境中的.net micro 是否有优化,是否有人可以给我一些关于引擎盖下发生了什么的细节这里的线程(分配了多少内存,生成了多少个周期等)。

【问题讨论】:

  • .NET Micro 是开源的,你为什么不看看?并衡量您想了解的内容。

标签: performance .net-micro-framework netduino


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 谢谢,这不是家庭作业,我也不是在开发系统。我只是好奇而已。谢谢
  • 然后作为一个广泛的观察,我要补充一点,我发现 Netduino 非常适合不需要高速采样和计算的任何东西,因此我为它设计了自己的背板,以简化外壳安装、电源调节用于继电器和伺服电机以及一个将 COM1 重新映射到 COM2 的插座,因此我可以使用两个都想在 COM1 上的屏蔽。我发现以性能换取简单是非常值得的。
猜你喜欢
  • 2011-04-25
  • 2012-05-29
  • 2016-04-15
  • 1970-01-01
  • 1970-01-01
  • 2011-01-08
相关资源
最近更新 更多