【问题标题】:CreateFileMapping with multiple threads具有多个线程的 CreateFileMapping
【发布时间】:2009-12-21 11:08:56
【问题描述】:

我尝试使用同时运行的 2 个线程,并且都使用 FileMapping 功能通过不同的句柄将文件映射到内存上。 问题是 MapViewOfFile 函数有时会将两个线程上的映射分配到相同的内存偏移量。 我尝试在这些部分上使用互斥锁,但似乎在高使用率之后我无法写入映射位置。 尝试使用获取要使用的内存偏移量的 MapViewOfFileEx,但我不知道应该提供什么偏移量。 任何帮助,将不胜感激。谢谢。

【问题讨论】:

  • “写入失败”,这应该是真正发生的事情的线索。请提供详细信息。
  • 你能发布代码和更详细的“写失败”的描述吗?我是内存映射文件的忠实粉丝(在适当的时候),我很想看到更多关于这个问题的信息/帮助找到答案。

标签: c file multithreading


【解决方案1】:

我运行了一些测试,但我没有为映射视图获得相同的地址,除非文件映射的两个实例都标记为只读,即使两个视图都是从同一个文件映射对象映射的。操作系统将根据进程的地址空间映射视图,而不是基于打开视图的线程。您能否向我们展示您用于获取文件句柄、文件映射句柄和映射视图的代码?

【讨论】:

    猜你喜欢
    • 2013-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-10
    • 1970-01-01
    • 2013-03-02
    相关资源
    最近更新 更多