让我们使用 POSIX 共享内存,如 shmget() - 协调进程间通信的常见调用。在共享内存段上调用 shmget() 和协调通信与 Linux 在单个进程中实现线程间共享内存和同步的方式有何不同。其中一个更轻吗?
最佳答案
SHM 用于多进程中的 IPC。在现代操作系统中,每个进程都看不到彼此的内存空间。使用 shmget()
的公共(public)键获取共享内存,并使用 shmat()
将共享内存页映射到每个进程内的本地内存地址。由于不同的内存使用和加载到每个进程空间的共享库,映射的共享内存地址可能不同。并且 SHM key 、大小在这些过程中是预定义和固定的。
对于线程的内存,我们可能不叫它共享内存,因为线程都是在同一个进程的内存空间寻址。他们可以在同一个进程空间中查看和读/写。
关于linux - IPC 的共享内存和线程的共享内存有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13345059/