【问题标题】:CreateFileMapping is used to create shared memory in win32CreateFileMapping用于在win32中创建共享内存
【发布时间】:2011-07-13 10:39:25
【问题描述】:

CreateFileMapping 用于在 win32 中创建共享内存。需要同步共享内存读/写还是自动完成?

【问题讨论】:

  • 这是一个很奇怪的问题,在多个线程上运行 CreateFileMapping() 没有多大意义。您必须等到拿回 HANDLE 才能使用它。另一个进程改为调用 OpenFileMapping。这需要同步,您无法打开尚不存在的映射。
  • 可能OP的意思是不同线程/进程对共享内存的访问是否自动同步?
  • 是的,我的意思是共享内存是否需要同步。

标签: c win32-process


【解决方案1】:

您的问题不清楚是否将其用于线程或进程之间的共享内存,因此请确定:对于不需要文件映射的线程,单个进程中的所有内存对所有线程都是可见的(并且需要同步)。

要将它用于进程之间的共享内存:是的,您必须明确同步对它的访问,因为系统无法知道对它的连续写入是否意味着要分组为单个事务。提示:要同步它们,您不能使用关键部分(它们仅适用于进程中的线程),您可以使用:

http://msdn.microsoft.com/en-us/library/aa904937%28v=VS.85%29.aspx

【讨论】:

    猜你喜欢
    • 2015-08-08
    • 1970-01-01
    • 1970-01-01
    • 2013-09-30
    • 1970-01-01
    • 1970-01-01
    • 2012-01-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多