线程堆栈和堆栈

时间:2010-03-15 16:14:33

标签: .net multithreading memory-management heap stack

在生成新线程的情况下如何分配内存,即内存堆,内存堆栈和线程如何相关?我知道这是基本的(.net框架概念)但不知怎的,我不太了解这个概念。

4 个答案:

答案 0 :(得分:2)

由于.Net线程的实现方式,很难回答这个问题。托管和相应的本机线程之间不一定有1-1实现。 CLR可以自由地使用多个本机线程来实现单个托管线程。因此,分配新的托管线程不一定会导致生成本机线程。它可以简单地假设现有的。

你能告诉我们为什么这对你有用吗?也许这会引导我们找到更好的答案。

答案 1 :(得分:1)

堆栈属于线程上下文。堆属于进程,因此它在线程之间共享。

答案 2 :(得分:1)

它比.net更深刻。线程是OS本机对象。所谓的托管线程只是本机线程的包装。

回到你的问题。内存堆是在同一进程的线程之间共享的,因为它们位于单个虚拟内存空间中。堆栈是个人的。

答案 3 :(得分:0)

每个线程都有自己的堆栈,但所有线程共享堆。