2009-10-21 52 views
1

我有一些使用MapViewOfFile共享數據的程序,但我得到奇怪的訪問衝突,似乎是從訪問映射的文件數據。MapViewOfFile與線程之間的指針

一些共享數據有指針,但是這些指針只能由一個進程設置和使用,但是由進程內的多個線程來設置和使用。

我知道你不能在不同進程的映射視圖中使用指針,因爲顯然它們可以映射到每個進程的不同內存,但是在同一進程的線程之間映射內存中使用指針是否安全?

回答

0

是的,由於線程共享相同的地址空間,所以在同一進程中的線程之間共享指針(在映射內存中或不在)是安全的。

1

您可以在同一進程內的線程之間共享指針。只要確保你用一個鎖(如臨界區)來保護共享內存。多線程同時訪問共享內存 - 特別是在一個或多個線程正在更新內存的情況下 - 很容易導致訪問衝突。