在Linux上,是否可以让进程的线程在不同的虚拟地址空间上运行?如果是这样,怎么样?
答案 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
标志组合。