线程和进程之间的共享内存

Shared memory between threads and processes

有人可以帮我解决这些问题吗:

  1. 同一进程内线程共享的内存(code/data)段是多少(不同进程不共享)?

  2. 两个进程可以共享它们的虚拟地址space吗?

  3. 两个进程可以共享全局变量吗?

  4. 进程间使用内存映射文件可以实现什么样的数据共享?

  5. 是否可以使用内存映射文件共享链表?还有一组数字?

  1. 一个进程只有一个地址space。单个进程中的所有线程都可以访问该进程的所有内存。

  2. 没有。在 Windows 上,要跨进程边界共享内存,您必须使用共享数据段或内存映射文件对象。

  3. 仅当变量存储在共享内存中时。

  4. 可以使用内存映射文件共享任何 POD 数据。将其视为一块原始的连续字节。您可以共享通常适合字节数组的任何内容。

  5. 链表不能共享,因为它的节点在内存中包含指向彼此的指针,并且指针不能跨进程边界使用。您必须将列表序列化为使用偏移量而不是指针的平面格式。一个POD类型的数组,像整数一样,可以共享,是的。