2

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

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

同样,GNU GCC 编译器内在函数:__sync_add_and_fetch 和 __sync_lock_test_and_set 呢?

4

1 回答 1

5

这个问题本质上是两个不同答案的两个问题。

  1. 对于__sync_XXXGCC 中的内置函数,答案是肯定的。

请参阅像这样的任何在线文档,其中描述了这些内置函数通常会发出完整的屏障,甚至可以防止处理器管道内的内部推测负载。每一个多线程、多进程等共享内存对它们都是安全的。

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

如果变量在共享内存中,不同进程的线程可以使用这种机制

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

于 2014-10-16T07:26:04.720 回答