代码之家  ›  专栏  ›  技术社区  ›  Myforwik

带有线程之间指针的mapviewoffile

  •  1
  • Myforwik  · 技术社区  · 15 年前

    我有一些程序使用mapviewoffile来共享数据,但是我遇到了奇怪的访问冲突,这些冲突似乎来自于访问映射的文件数据。

    一些共享数据有指针,但是这些指针只由一个进程设置和使用,而由进程中的多个线程使用。

    我理解您不能在映射视图中跨不同进程使用指针,因为很明显,它们可以映射到每个进程的不同内存,但是在同一进程的线程之间的映射内存中使用指针是否安全?

    2 回复  |  直到 15 年前
        1
  •  0
  •   user200783    15 年前

    是的,在同一进程中的线程之间共享指针(不管是否在映射内存中)是安全的,因为线程共享相同的地址空间。

        2
  •  1
  •   PapaBoojum    15 年前

    您可以在同一进程内的线程之间共享指针。只需确保使用锁保护共享内存,如关键部分。多个线程同时访问共享内存-特别是当一个或多个线程正在更新内存时-很容易导致访问冲突。