What are the similarities between the Java memory model and the C++11 memory model?
新的C++标准引入了内存模型的概念。关于这个问题,已经有问题了,它意味着什么,它如何改变我们在C++中编写代码的方式等等。
我感兴趣的是了解C++内存模型是如何与旧的、众所周知的Java内存模型(1.5)相关的。是一样的吗?相似吗?它们有什么显著的区别吗?如果是,为什么?
Java内存模型已经存在很长时间了,很多人都相当清楚地知道它,所以我想,通过与Java内存模型进行比较,不仅可以帮助我学习C++内存模型,而且对我也有帮助。
- 型C++的内存模型依赖于编译器,不是吗?不管怎样,对于C++ 03和C++ 11应该是一样的。
- 型不,C++ 11引入了一个与平台无关的并发内存模型。这是C++中多线程编程的一个重大突破。
- 型为什么这不是建设性的?我认为指出异同是一件非常客观的事情。答案肯定会涉及事实(C++ 11不做X,而Java做),引用(见C++ 11标准部分Y),或特定的专长。
- 型他们有什么相似之处吗?
- 型嗯,有些事情似乎是常识,我希望它们既存在于C++和Java内存模型中,也因为我不知道C++内存模型,我不想这样假设。
- 型语言太不同了,无法用这种方式进行比较。在很多方面,可以将C++内存模型与Java的等价物进行比较。选择一个(动态分配、并发性)并讨论其含义,但是所述问题太模糊了。投票结束。
- 型@马蒂尼奥:虽然任何比较都涉及到事实,但没有明确的答案。您能说的最好的一点是,有人列出了两个内存模型的所有属性。比较本身也没有任何意义,因为这两种语言在处理记忆的方式上有很大的不同。这个问题表明,在另一个基础上学习一个是有用的,但我看不出如何去学习。它们太不同了,任何比较都无法让一个人通过类比来理解另一个人。
- 型本文介绍了C++ 11内存模型:C++ 0x引入了标准化内存模型。这是什么意思?它会如何影响C++程序设计?
- 型@亚历山德罗克。"语言太不同了,无法用这种方式进行比较。
- 型我怀疑投票结束这个问题的一些人不理解这个问题,因为术语记忆模型缺乏描述性(以及由此产生的歧义)。注意,这个问题是关于在并发环境中处理内存的,而不是一般的内存使用情况。
- 型以一种简单的方式重申我之前的评论:这个问题是由不了解问题背景的人来解决的。--如他们上述评论所证明。
Java内存模型是对C++ 11内存模型的重要影响,是我们提取之前发生的术语并与之同步的地方。然而,C++ 11内存模型比Java内存模型对内存排序提供了更细粒度的控制。
Java EDCOX1的0个变量相当于C++ 11 EDCOX1,1个变量,如果使用EDCOX1,2内存读取顺序,EDOCX1,3,写入顺序,EDCOX1,4,RMW操作的排序。
Java中没有等价于EDCOX1的5Ω,或者EDCOX1×6。
- + 1。很好的回答。既然你已经写了一本关于EDCOX1(0)的书,如果你在这个主题中给出一个答案,那就太好了(我特别高兴):C++0x引入了标准化的内存模型。这是什么意思?它会如何影响C++程序设计?
- 看来,Java易失性相当于C++ STD::事实上,在Java中,IRIW情况必须是序列一致的。看看这个,这个和这个。