是否可以在单独的虚拟地址空间中运行每个线程?

时间:2012-06-19 10:33:41

标签: linux multithreading virtual-address-space

在Linux上,是否可以让进程的线程在不同的虚拟地址空间上运行?如果是这样,怎么样?

3 个答案:

答案 0 :(得分:7)

否。根据定义,线程共享一个地址空间。如果您需要单独的地址空间,则应使用多个进程。

答案 1 :(得分:3)

虽然不可能在具有不同虚拟地址空间的同一进程中拥有线程,但仍然可以拥有Thread Local Storage。你可能对此感兴趣。

答案 2 :(得分:2)

这是不可能的。 Linux使用clone系统调用来实现线程。它采用的标志包括CLONE_THREAD,意味着新进程与调用进程放在同一个线程组中,CLONE_VM,意味着两个进程/线程共享虚拟内存。从Linux内核版本2.6.0-test6开始,如果不指定CLONE_THREAD,则无法指定CLONE_VM。 (参见该链接的错误部分。)

但是,根据您的确切动机,您可以找到符合您需要的clone标志组合。