让我们使用 POSIX 共享内存,例如 shmget() - 协调进程间通信的常见调用。调用 shmget() 并协调共享内存段上的通信与 Linux 在单个进程中实现共享内存和线程之间的同步有何不同。其中之一更轻吗?
SHM适用于多进程中的IPC。在现代操作系统中,每个进程无法看到彼此的内存空间。使用公用密钥shmget()
获取共享内存并使用shmat()
将共享内存页映射到每个进程内的本地内存地址。由于内存使用情况和加载到每个进程空间的共享库不同,映射的共享内存地址可能会有所不同。并且SHM密钥、大小是在这些进程之间预定义和固定的。
对于线程的内存,我们可能不会将其称为共享内存,因为线程都在单个进程内存空间中寻址。他们可以在同一进程空间中查看和读/写。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)