我知道C ++ 11内存模型的灵感来自Java内存模型,但必须有一些能够区分这两种内存模型的东西。
Java uses synchronize and mutexes
C++11 uses atomics and mutexes
C# uses volatile
但是在内存中的多线程和线程的读/写访问方面,这三者之间的根本区别是什么?这三种模式中哪种内存模型更好?任何人都可以详细介绍这个主题(只是差异)或提供一个我可以参考的链接?这些在各种实时系统上实现的效率如何?
提前致谢!
答案 0 :(得分:2)
虽然这不能量化C ++ 11内存模型之间的差异,但它确实详细介绍了C ++ 11模型,这是最近编写的,因此很可能最现代的:
http://herbsutter.com/2013/02/11/atomic-weapons-the-c-memory-model-and-modern-hardware/
一旦您将C ++ 11的模型理解为一个起点,这将为您提供更好的工具来询问其他语言。