9

两个 Windows 进程将内存映射到同一个共享文件。如果文件包含计数器,是否适合使用Interlocked*函数(如InterlockedIncrement)来更新这些计数器?那些会跨进程同步访问吗?还是我需要使用更重的东西,比如互斥体?或者也许共享内存机制本身可以确保一致的视图。

4

2 回答 2

7

联锁功能正是为这种类型的使用而设计的。

来自http://msdn.microsoft.com/en-us/library/ms684122.aspx

如果变量在共享内存中,不同进程的线程可以使用这些函数。

当然,如果您需要以原子方式更新多个项目,则需要使用互斥锁或其他跨进程工作的同步对象。共享内存机制没有内置任何东西来提供对共享内存的访问同步 - 您需要使用互锁函数或同步对象。

于 2009-10-28T14:46:05.577 回答
3

来自MSDN

...

联锁 API

互锁函数提供了一种简单的机制,用于同步访问由多个线程共享的变量。它们还以原子方式对变量执行操作。如果变量在共享内存中,不同进程的线程可以使用这些函数。

所以,是的,你的共享内存方法是安全的。

于 2009-10-28T14:56:06.540 回答