线程和进程之间的共享内存
Shared memory between threads and processes
有人可以帮我解决这些问题吗:
同一进程内线程共享的内存(code/data)段是多少(不同进程不共享)?
两个进程可以共享它们的虚拟地址space吗?
两个进程可以共享全局变量吗?
进程间使用内存映射文件可以实现什么样的数据共享?
是否可以使用内存映射文件共享链表?还有一组数字?
一个进程只有一个地址space。单个进程中的所有线程都可以访问该进程的所有内存。
没有。在 Windows 上,要跨进程边界共享内存,您必须使用共享数据段或内存映射文件对象。
仅当变量存储在共享内存中时。
可以使用内存映射文件共享任何 POD 数据。将其视为一块原始的连续字节。您可以共享通常适合字节数组的任何内容。
链表不能共享,因为它的节点在内存中包含指向彼此的指针,并且指针不能跨进程边界使用。您必须将列表序列化为使用偏移量而不是指针的平面格式。一个POD类型的数组,像整数一样,可以共享,是的。
有人可以帮我解决这些问题吗:
同一进程内线程共享的内存(code/data)段是多少(不同进程不共享)?
两个进程可以共享它们的虚拟地址space吗?
两个进程可以共享全局变量吗?
进程间使用内存映射文件可以实现什么样的数据共享?
是否可以使用内存映射文件共享链表?还有一组数字?
一个进程只有一个地址space。单个进程中的所有线程都可以访问该进程的所有内存。
没有。在 Windows 上,要跨进程边界共享内存,您必须使用共享数据段或内存映射文件对象。
仅当变量存储在共享内存中时。
可以使用内存映射文件共享任何 POD 数据。将其视为一块原始的连续字节。您可以共享通常适合字节数组的任何内容。
链表不能共享,因为它的节点在内存中包含指向彼此的指针,并且指针不能跨进程边界使用。您必须将列表序列化为使用偏移量而不是指针的平面格式。一个POD类型的数组,像整数一样,可以共享,是的。