0

I was curious as to what are the impacts of thread creation were on a netduino running the .net micro framework. It's commonly understood that threads have an inherent overhead to them but I was wondering if anyone knew if there were optimizations or not for .net micro on an embedded environment and if anyone can give me some detail as to what happens under the hood with a thread here (how much memory is allocated, how many cycles it takes to generate, etc).

4

1 回答 1

2

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

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

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

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

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

于 2012-10-02T23:41:09.463 回答