我们都知道,在多个线程的情况下,每个线程都维护它的独立堆栈和寄存器状态。
它们是否也维护单独的虚拟内存状态,还是可以共享?
我认为在进程之间共享虚拟内存状态不应该有任何问题。
编辑:
如果线程没有维护状态,那么为什么链接上的问题1( http://www.geeksforgeeks.org/archives/19913 )的第三个选项不正确呢?
发布于 2012-06-26 19:25:50
每个进程都有自己的地址空间,也就是进程可以访问的虚拟地址范围。每个进程可以有多个线程。因此,是的,进程中的所有线程共享相同的地址空间。请注意,这是变量可以在同一进程的多个线程之间共享的主要原因,而不需要任何特殊的机制。
另一方面,如果不使用、进程间通信等特殊机制,就无法在两个单独的进程之间共享变量,因为每个进程都有自己的地址空间。
发布于 2012-06-26 19:03:54
正确,两个线程可以共享相同的虚拟内存空间。这本质上(非常表面上)是线程与进程相关的定义。
发布于 2012-06-26 19:51:37
他们总是分享记忆。它可能而且确实会引起很多问题。
(首先,请查看“多线程”标记。)但是多个线程可以让你监听很多不同的输入,它们让你让所有的CPU核心都能得到它们的支持。
https://stackoverflow.com/questions/11214078
复制相似问题