我知道在 Java 中,当从另一个线程访问成员时,无法保证成员的可见性。
意思是访问线程可能会看到成员的窃取值(因为缓存还没有刷新到主内存)。
我想知道 C++ 是否也是这种情况? (也在 C++11 中?)
如果是这样,你如何在 C++ 中解决这个问题? (在 Java 中,您可以使用 synchronized 关键字)。
最佳答案
您可以使用 std::atomic<T>
作为成员的类型。这保证了一组原子操作,如获取和递增。这通常比添加互斥锁要好得多,因为这些操作是通过 CPU 的特殊原子指令实现的
关于java - 并发 C++ 程序中的可见性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22798873/