【问题标题】:Atomic compare-and-swap for a location in a shared memory segment共享内存段中位置的原子比较和交换
【发布时间】:2012-11-22 14:27:05
【问题描述】:

我想了解使用InterlockedCompareExchange() 更改使用CreateFileMapping(INVALID_HANDLE_VALUE 创建的段中的内存并在多个进程之间共享是否存在任何隐藏问题。

换句话说,进程能否依赖 CAS 语义来操作它们共享的内存块?我认为他们可以,只是想确认一下。

谢谢

【问题讨论】:

    标签: windows shared-memory atomic compare-and-swap


    【解决方案1】:

    CAS 操作将与该内存完美配合。文件映射 API 和虚拟内存系统完成了将内存映射到多个进程的所有艰苦工作。等你接触到记忆时,你已经无法将它与任何其他记忆区分开来了。

    【讨论】:

    • David,这是“智能猜测”还是您编写了任何实际依赖于此的代码?理论上这应该可以正常工作,但我正在寻找的是确认 Windows 内存管理器中没有与此相关的任何已知怪癖。
    • 这只是一天结束时的记忆。真的和使用 VirtualAlloc 映射的内存没什么区别。
    猜你喜欢
    • 1970-01-01
    • 2021-03-09
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 2010-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多