在使用实时应用程序时,我无法决定线程堆栈大小,无法计算深度,因为线程正在触发其代码不可见的 Api。由于它是实时应用,因此也无法进行测试。由于它是实时系统,因此内存非常宝贵。
是否有任何启发式方法来计算线程大小?
想要准确了解,就需要测量。
由于您不知道API的堆栈使用情况,我会亲自用已知值填充麻袋,并在您的程序测试后找到最大使用量(即已知值被其他值覆盖的地方)。
这是最精确的方法,嵌入式系统程序员经常使用它(一些 RTOS 甚至具有用于此任务的内置函数),
在使用实时应用程序时,我无法决定线程堆栈大小,无法计算深度,因为线程正在触发其代码不可见的 Api。由于它是实时应用,因此也无法进行测试。由于它是实时系统,因此内存非常宝贵。
作为提示,我会告诉你,如果你的应用程序是真正实时的,你 最好做你自己的上下文切换模块并控制诸如虚拟内存(如果有的话)或分页(因为它涉及由虚拟内存引起的更多不期望的透明延迟)之类的事情。如果你处于这种情况,你必须坚持使用每个线程的堆栈量较小或固定,那么您最好不要使用虚拟分页内存或自动分配的堆栈,为每个堆栈安排固定的数量(这样堆栈就不会动态增长)并将其放置在全局变量段中。