在生成新线程的情况下如何分配内存,即内存堆,内存堆栈和线程如何相关?我知道这是基本的(.net框架概念)但不知怎的,我不太了解这个概念。
答案 0 :(得分:2)
由于.Net线程的实现方式,很难回答这个问题。托管和相应的本机线程之间不一定有1-1实现。 CLR可以自由地使用多个本机线程来实现单个托管线程。因此,分配新的托管线程不一定会导致生成本机线程。它可以简单地假设现有的。
你能告诉我们为什么这对你有用吗?也许这会引导我们找到更好的答案。
答案 1 :(得分:1)
堆栈属于线程上下文。堆属于进程,因此它在线程之间共享。
答案 2 :(得分:1)
它比.net更深刻。线程是OS本机对象。所谓的托管线程只是本机线程的包装。
回到你的问题。内存堆是在同一进程的线程之间共享的,因为它们位于单个虚拟内存空间中。堆栈是个人的。
答案 3 :(得分:0)
每个线程都有自己的堆栈,但所有线程共享堆。