假设我正在构建一个webcrawler并且我有一个包含所有访问过的URL的哈希。
当我分叉子进程时,我希望能够从子进程访问被访问URL的哈希值,但我不想复制哈希值,因为它很大并且会耗尽计算机的内存。
当我使用Parallel :: ForkManager进行fork时,我打印了父进程中声明的哈希的地址,当我从父进程和子进程打印时,我得到相同的地址,例如HASH(0x7fc59d017f38)
但我想确保数据结构没有被复制到子进程
答案 0 :(得分:8)
没有。每个进程都有自己的地址空间。孩子的地址空间以其父母的副本开头,但是改变其中一个对另一个没有影响。您需要使用各种可能的通信通道(管道,memcached,数据库,文件等)之一显式交换您想要“共享”的数据。