首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >POSIX共享内存模型

POSIX共享内存模型
EN

Stack Overflow用户
提问于 2020-06-27 17:49:37
回答 1查看 491关注 0票数 1

是否有POSIX共享内存的内存模型规范(跨进程)?

我希望有一些可以与C++内存模型相媲美的东西,以便回答如下问题:

  1. 有数据竞赛的定义吗?
  2. 数据竞赛是否有未定义的行为(如在C++中)?
  3. 是否有什么东西可以约束跨进程的内存可见性顺序?我知道pthread_mutex可以放在共享内存中并被多个进程使用,但是这会导致在关系之前发生吗?
  4. 记忆障碍起作用了吗?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-28 07:45:20

根据POSIX规范,共享内存对象定义为

表示可以同时映射到多个进程的地址空间的内存的对象。

在Linux平台上,映射内存对象相当于匿名映射:这是物理RAM (或交换内存)到进程虚拟地址空间的映射。这通常是任何线程或进程的内存。

在Linux等平台上,您可以预期原子提供的低内存级别同步原语将提供进程间同步。根据您的搜索,pthread_mutex将工作(可能是因为它们只在比较和交换循环和futex系统调用方面实现)。但std::mutex也可能被打破。

不过,我在POSIX规范中没有看到任何禁止共享内存由文件系统支持的规范。在这样的平台上,内存同步就会中断。但我想没有这样的平台。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62613560

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档