2009-10-21 71 views
1

我有一些使用MapViewOfFile共享数据的程序,但我得到奇怪的访问冲突,似乎是从访问映射的文件数据。MapViewOfFile与线程之间的指针

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

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

回答

0

是的,由于线程共享相同的地址空间,所以在同一进程中的线程之间共享指针(在映射内存中或不在)是安全的。

1

您可以在同一进程内的线程之间共享指针。只要确保你用一个锁(如临界区)来保护共享内存。多线程同时访问共享内存 - 特别是在一个或多个线程正在更新内存的情况下 - 很容易导致访问冲突。