在产生新线程的情况下如何分配内存,即内存堆、内存堆栈和线程是如何相关的?我知道这是基本的(.net 框架概念),但不知何故我不太了解这个概念。
问问题
772 次
4 回答
2
由于.Net 线程的实现方式,这个问题真的很难回答。托管线程和相应的本机线程之间不一定存在 1-1 实现。CLR 可以自由地使用多个本机线程来实现单个托管线程。所以分配一个新的托管线程并不一定会产生一个本地线程。它可以简单地假设一个现有的。
您能告诉我们为什么这会引起您的关注吗?也许这会让我们得到更好的答案。
于 2010-03-15T16:19:25.207 回答
1
堆栈属于线程上下文。堆属于进程,因此在线程之间共享。
于 2010-03-15T16:17:48.857 回答
1
它比.net 更深入。线程是操作系统本机对象。所谓的托管线程只是对本机线程的包装。
所以回到你的问题。内存堆在同一进程的线程之间共享,因为它们位于单个虚拟内存空间中。堆栈是单独的。
于 2010-03-15T16:19:16.300 回答
0
每个线程都有自己的堆栈,但所有线程共享堆。
于 2010-03-15T16:17:30.137 回答