通过 mmap 文件进行 IPC:应该使用原子和/或易失性吗?

2024-03-09

我使用 mmap 文件在进程之间共享数据。

代码是这样的:

struct Shared
{
int Data;
};

int file = open("file.dat", O_RDWR);
Shared* shared = static_cast<Shared*>(
    mmap(0, sizeof(Shared), PROT_READ | PROT_WRITE, MAP_SHARED | MAP_POPULATE, file, 0));
shared->Data++;

问题是:

  1. 我应该使用易失性限定符(volatile int Data)?
  2. 我应该对共享数据使用原子操作(__sync_fetch_and_add(&(shared->Data), 1))?

备查:易失性:对于多线程编程几乎无用 http://software.intel.com/en-us/blogs/2007/11/30/volatile-almost-useless-for-multi-threaded-programming/.


从多个线程更改整数时,不应使用 volatile。挥发性既不是必要的,也不是充分的。原子操作就可以了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过 mmap 文件进行 IPC:应该使用原子和/或易失性吗? 的相关文章

  • LINQ to XML - 如何正确使用 XDocument

    现在我首先要说的是 这确实是一项任务 然而 在我遇到 Linq to XML 语法之前 我几乎已经完成了它 我有 2 个课程 曲目和 CD 现在作为作业的一部分 我创建了一张 CD 然后向其中添加了一些曲目 在搜索了大量完美解释了如何从 x
  • 将 2D 数组映射到 1D 数组

    我想用一维数组来表示一个二维数组 函数将传递两个索引 x y 和要存储的值 这两个索引代表一维数组的单个元素 并相应地设置它 我知道一维数组需要具有 arrayWidth arrayHeight 的大小 但我不知道如何设置每个元素 例如 如
  • 浮点提升:stroustrup vs 编译器 - 谁是对的?

    在 Stroustrup 的新书 C 编程语言 第四版 第 10 5 1 节中 他说 在执行算术运算之前 整数提升用于从较短的整数类型创建整数 类似地 浮点提升是用于从浮点数创建双精度数 我用以下代码确认了第一个声明 include
  • 使用 VSTO 更改 Outlook 设置

    我刚刚花了大约 4 个小时试图弄清楚如何以编程方式检索 设置 Microsoft Outlook 2010 的 Outlook 设置 我所说的 设置 是指文件 选项 邮件下的设置 我想做的是检索用户设置的设置列表 自动化我们每天需要在某些消
  • 组合 Datepicker 和 Timepicker 值 Win 8.1

    我试图同时使用 Datepicker Timepicker 来返回可以存储在数据库中的 DateTime 例如 我想要安排会议的开始日期和结束日期 如果适用 我将如何将这些值组合成 SQL 数据库可以处理的正确格式 任何反馈都会很棒 我让这
  • 如何避免选择项目时 winforms 树视图图标发生变化

    我正在一个小型 C Winforms 应用程序中尝试树视图 我已经以编程方式将 ImageList 分配给树视图 并且所有节点都很好地显示了它们的图标 but当我单击一个节点时 它的图标会发生变化 变为 ImageList 中的第一个图像
  • 防止复制构造和返回值引用的分配

    如果我有一个函数返回对类实例的引用 但我无法控制其源 比如说list
  • 如何检测斑点并将其裁剪成 png 文件?

    我一直在开发一个网络应用程序 我陷入了一个有问题的问题 我会尝试解释我想要做什么 在这里您看到第一个大图像 其中有绿色形状 我想要做的是将这些形状裁剪成不同的 png 文件 并使它们的背景透明 就像大图像下面的示例裁剪图像一样 第一张图像将
  • CMake - 将预构建库链接到 C# 项目

    我正在使用 CMake 构建 C 库 该库依赖于已构建的库 dll 我似乎无法让图书馆链接到我的图书馆 我尝试过使用target link libraries mylib external lib 我也尝试过暴力破解 reference e
  • 如何在不使用reinterpret_cast的情况下使用dlsym()加载函数?

    我正在尝试使用 clang tidy 来强制执行 C 核心指南 虽然它确实有很多有效点 但有一件事我无法真正解决 dlsym 返回一个void 我需要以某种方式将其转换为正确的函数指针 为此 我使用reinterpret cast 由于指南
  • _mm_max_ss 在 clang 和 gcc 之间有不同的行为

    我正在尝试使用 clang 和 gcc 交叉编译一个项目 但在使用时发现一些奇怪的差异 mm max ss e g m128 a mm set ss std numeric limits
  • 在 C# 中赋值后如何保留有关对象的信息?

    我一直在问我的想法可能是解决方案 https stackoverflow com questions 35254467 is it possible in c sharp to get the attributes attached to
  • 如何使用 Clang 查找内存泄漏

    我在我的机器 ubuntu 中安装了 Clang 以便发现我的 C 代码中的内存泄漏 我编写了一个示例代码来检查它的工作情况 如下所示 File hello c for leak detection include
  • OpenMP C 程序运行速度比顺序代码慢

    我是 OpenMP 的新手 正在尝试并行化 Jarvis 的算法 然而事实证明 与顺序代码相比 并行程序花费的时间要长 2 3 倍 难道问题本身就不能并行化吗 或者我并行化它的方式有问题 这是我针对该问题的 openMP 程序 其中有 2
  • C# ToString("MM/dd/yy") 删除前导 0 [重复]

    这个问题在这里已经有答案了 可能的重复 格式化 NET DateTime Day 不带前导零 https stackoverflow com questions 988353 format net datetime day with no
  • 改进C++逐行读取文件的能力?

    我正在解析大约 500GB 的日志文件 我的 C 版本需要 3 5 分钟 我的 Go 版本需要 1 2 分钟 我正在使用 C 的流来流式传输文件的每一行以进行解析 include
  • 在 MVVM 中,可以在视图后面的代码中访问 ViewModel 吗?

    在 MVVM 模式中 是否可以接受甚至可以访问视图代码后面的 ViewModel 属性 我有一个可观察的集合 它填充在 ViewModel 中 我需要在视图中使用它来绑定到带有链接列表的无限滚动条 IE private LinkedList
  • 从 C# 中的 .NET SecureString 读取单个字符?

    WPF 的PasswordBox 返回一个SecureString 它对窥探者隐藏密码 问题是你最终必须获得密码的值 而我在网上找到的建议都涉及将值复制到字符串中 这会让你回到窥探者的问题 IntPtr bstr Marshal Secur
  • ASP.NET Core:会话 ID 始终变化

    今天启动了一个全新的 ASP NET Core 网站 按照说明添加会话 我们在索引页上打印出会话 ID 它始终是唯一的 我认为这可能是 cookie 合规性 所以我在 Chrome 的高级设置和调试器中删除了所有 cookie 但横幅不会再
  • 当我读取 500MB FileStream 时出现 OutOfMemoryException

    我使用 Filestream 读取大文件 gt 500 MB 但出现 OutOfMemoryException 任何有关它的解决方案 我的代码是 using var fs3 new FileStream filePath2 FileMode

随机推荐

  • 如何将所有子域请求重定向到 htaccess 中的主域?

    我需要重定向所有子域请求以重定向到我的 htaccess 中的主域 我需要它还包括某种通配符重定向 例如Washington mysite com 重定向至 mysite com washington 但我还需要将子域上的任何旧网址重定向到
  • Play Framework 2.5 模块的依赖项注入

    我有一个具有以下签名的模块类 class SilhouetteModule extends AbstractModule with ScalaModule 我想注入配置 class SilhouetteModule Inject confi
  • 空白导致 div 在纯 CSS 中堆叠[重复]

    这个问题在这里已经有答案了 我正在使用纯 CSS 来布局网站 但遇到了问题 如果嵌套网格元素之间存在任何空格 则会破坏布局并将最后一个 div 推到下一行 我创建了一个测试网站 内容尽可能少 以测试是否只有我一个人这样做 但我仍然遇到了问题
  • 类签名中的“()V”是什么意思?

    我用 Javassist 创建了一个构造函数 它没有真正的方法 CtConstructor c CtNewConstructor make argTypes null newClass 当我试图发出这个班级的签名时 c getSignatu
  • 了解包含多个Content-Type标头的curl POST请求命令

    以下卷曲命令 curl v F json method update video params video id 582984001 itemState INACTIVE token jCoXH5OAMYQtXm1sg62KAF3ysG90
  • 检测登录页面中的表单身份验证超时

    当您将表单身份验证设置为在访问受保护页面时重定向到 login aspx 时 有什么好方法可以在 login aspx 中检测用户是否因为尚未登录而被发送到那里 或者因为他们的表单身份验证票证已存在已到期 我想显示 您已超时 消息 在这个问
  • 表单未提交到数据库[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 因此 当我在表单上输入信息后 它会使用新表单刷新 new php 页面 但不会提交任何信息 我没有收到任何错误 就像我在页面上单击
  • Python 中频谱图的 FFT

    我将如何使用 Python 从 WAV PCM 文件读取频率峰值 然后能够生成它的图像以进行频谱图分析 我正在尝试制作一个程序 允许您读取任何音频文件 将其转换为 WAV PCM 然后找到峰值和截止频率 Python 波库 http doc
  • Eclipse 注释/取消注释快捷方式?

    我认为这很容易实现 但到目前为止我还没有找到评论 取消评论快捷方式的解决方案Java class editor and jsf faceted webapp XHTML file editor to quickly comment unco
  • Node.JS 中的 createReadStream

    所以我使用了 fs readFile 它给了我 致命错误 CALL AND RETRY LAST 分配失败 进程超出 记忆 由于 fs readFile 在调用回调之前将整个文件加载到内存中 我应该使用 fs createReadStrea
  • CSS 过渡在悬停时闪烁

    太棒了 你用宝贵的时间阅读我的问题 我正在尝试在悬停时翻转 div 一切都很顺利 但在转换过程中它会闪烁 看起来几乎像是翻转了多次 这破坏了翻转的整体效果 下面是我的代码和小提琴 小提琴 FIDDLE http jsfiddle net h
  • WinRT 应用程序中的 app.config 相当于什么?

    在 Windows 桌面开发 WinForms WPF 中 app config是放置应用程序中使用的连接字符串或 uri 等内容的潜在位置 这允许最终用户在应用程序范围内更改这些设置 而无需开发人员重新构建和重新部署 WinRT应用程序中
  • Intellij / Android Studio 可以折叠注释吗?

    我在intellij中注释掉了这段代码 如您所见 此处无法折叠评论 然而 Webstorm 中相同的注释块可能会被折叠 有没有办法在intellij Android Studio中配置注释折叠 折叠任意选定的块 在编辑器中选择连续的代码片段
  • Django CSRF 框架有很多失败

    我的站点上的 CSRF Django 中间件 来自 SVN trunk 的版本 出现了很多失败 我得到的唯一错误是 CSRF 失败 原因 CSRF 令牌丢失或不正确 我如何诊断这些 CSRF 错误来自何处 我自己无法导致 CSRF 错误 但
  • 验证错误:向后分支上存在未初始化的对象/JVM 规范 4.10.2.4

    The JVM 规范 4 10 2 4 版本 7 最后一段 http docs oracle com javase specs jvms se7 html jvms 4 html jvms 4 10 2 4 says 如果未初始化对象的特殊
  • 更改 EditText setError 可绘制重力

    对于将要填充 RTL 文本的 EditText 有没有办法改变错误可绘制对象 当然还有弹出窗口 的重力 这是一个常规错误可绘制的示例 因此 由于输入的文本是 RTL 我希望弹出窗口显示在 EditText 的左侧 我尝试应用自定义绘图 但是
  • JavaFX 在列表视图中显示字符串附近的图像[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我想在列表视图中的字符串附近显示一条消息我尝试查找它但我不太理解它我从网站上尝试了这个http docs oracle com javafx
  • 如何在 spring 中将图像转换为多部分文件

    我有一个图像文件并正在创建File具有该图像的对象 File file new File E Shared Data Images xyz jpg 上面的行正在创建一个file具有某种尺寸的物体 例如440272 我需要转换上面的image
  • 我使用 getifaddrs 得到错误的 IP 地址

    获取以太网指定IP地址的函数 char get ethernet ip const char ethernet char ip size t len struct ifaddrs ips int rc getifaddrs ips if r
  • 通过 mmap 文件进行 IPC:应该使用原子和/或易失性吗?

    我使用 mmap 文件在进程之间共享数据 代码是这样的 struct Shared int Data int file open file dat O RDWR Shared shared static cast