2012-06-19 44 views
0

在Linux上,是否有可能讓進程的線程在不同的虛擬地址空間上運行?如果是這樣,怎麼樣?是否有可能在單獨的虛擬地址空間中運行每個線程?

+11

聽起來有點像你想要進程而不是線程。 – ThiefMaster

+0

我認爲這是不可能的。無論如何,你可以說原因 – 2012-06-19 10:35:34

+3

單獨的進程有什麼問題嗎?事實上,如果一個線程沒有與其兄弟分享它的地址空間,你想要什麼? –

回答

7

根據定義,線程共享一個地址空間。如果你需要單獨的地址空間,你應該使用多個進程。

2

這是不可能的。 Linux使用系統調用clone來實現線程。它需要的標誌包括CLONE_THREAD,這意味着新進程與調用進程放置在同一個線程組中,並且CLONE_VM表示兩個進程/線程共享虛擬內存。由於Linux內核版本2.6.0-test6,不能指定CLONE_THREAD而不指定CLONE_VM。 (請參見該鏈接的錯誤部分。)

但是,根據您的確切動機,您可能會找到clone的標誌組合,以實現您想要的功能。

相關問題