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