java - 并发 C++ 程序中的可见性

标签 java c++ multithreading c++11 memory-visibility

我知道在 Java 中,当从另一个线程访问成员时,无法保证成员的可见性。

意思是访问线程可能会看到成员的窃取值(因为缓存还没有刷新到主内存)。

我想知道 C++ 是否也是这种情况? (也在 C++11 中?)

如果是这样,你如何在 C++ 中解决这个问题? (在 Java 中,您可以使用 synchronized 关键字)。

最佳答案

您可以使用 std::atomic<T>作为成员的类型。这保证了一组原子操作,如获取和递增。这通常比添加互斥锁要好得多,因为这些操作是通过 CPU 的特殊原子指令实现的

关于java - 并发 C++ 程序中的可见性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22798873/

相关文章:

java - Eclipse 是否具有 Project Explorer 的 .svnignore/.cvsignore 等效项?

java - 如何在 jdialog 容器中监听按键事件?

java - JSON值类型是否需要严格定义?

java - 从 .avi 抓取帧

c++ - 套接字 API :Socket operation on non-socket

java - 立即停止线程中的 Runnable

c++ - 从文件中读取随机字符串时出错

c++ - 我的 Python interpereter 编译的 msvcrXX.dll 版本

php - Laravel 中的多线程

python - 在单独的python线程中运行函数