在多个进程之间共享共享对象

时间:2012-07-23 18:47:48

标签: linux shared-objects

是为每个进程单独加载共享对象还是在它们之间共享一个共享对象?例如,假设某些程序使用libc.so.然后启动该程序的两个过程。将这个共享对象加载到其内存区域中的每个进程两次,还是将它加载到内存中的某个位置ONCE并映射到两个进程的内存中?

2 个答案:

答案 0 :(得分:3)

共享对象通过mmap()加载MAP_PRIVATE标志。这意味着这些是写时复制映射,它们最初指向同一个内存,但是一旦修改了它们,就会在修改之前复制并“取消共享”。

答案 1 :(得分:0)

检查thread。从理论上讲,每个进程都拥有自己的地址空间,并且线程应该用于此目的,但这是系统实现的问题。