Win32 InterlockedIncrement和InterlockedExchange是否跨进程原子?

时间:2014-10-16 04:27:09

标签: linux windows gcc atomic atomic-swap

MSDN表示,互锁函数提供了一种简单的机制,用于同步对多个线程共享的变量的访问。

如果变量位于进程的共享内存中,我不确定它们是否可以跨多个进程的线程工作。

与GNU GCC编译器内在类似:__sync_add_and_fetch和__sync_lock_test_and_set?

1 个答案:

答案 0 :(得分:4)

这个问题基本上是针对两个不同答案的两个问题。

  1. 对于GCC中__sync_XXX内置的回答是肯定的。
  2. 请参阅任何在线文档,例如this,其中描述了这些内置文件通常会发出完全屏障,甚至可以阻止处理器管道内的内部推测负载。所有多线程,多进程等共享内存都是安全的。

    1. 我对Windows InterLockedXXX功能一无所知。但MSDN知道并说:
    2.   

      如果变量位于共享内存中,则不同进程的线程可以使用此机制

      所以两个答案都是“是”。