在阅读有关线程共享的所有内容时,我遇到了“调用堆栈”这个术语。虽然我知道线程有自己的堆栈,它们不与其他线程共享,但我不明白在线程方面调用堆栈是什么意思。我看过一些答案,但它们并不是很清楚。请解释一下调用堆栈的含义以及在多任务环境中如何与堆栈不同。谢谢。
在阅读有关线程共享的所有内容时,我遇到了“调用堆栈”这个术语。虽然我知道线程有自己的堆栈,它们不与其他线程共享,但我不明白在线程方面调用堆栈是什么意思。我看过一些答案,但它们并不是很清楚。请解释一下调用堆栈的含义以及在多任务环境中如何与堆栈不同。谢谢。
在纯理论中,C 的实现甚至可能不使用任何堆栈。在实践中,我听说过的每个编译好的 C 实现都使用一个调用堆栈,它是处理器堆栈(某些处理器,可能 Itanium IA-64,有两个机器堆栈)当有一个时(据我所知,IBM z Series 主机没有任何 硬件 堆栈,这是一些寄存器的常规使用)。因此,对于大多数处理器和ABI (ARM、x86、x86-64 等),调用堆栈就是堆栈,每个线程都有自己的堆栈。