Tag: 内存模型

在64位VM上写入参考primefaces

java内存模型要求写一个int是primefaces的:也就是说,如果你在一个线程中给它写一个值(由4个字节组成)并在另一个线程中读取它,你将得到所有的字节或者没有,但是从来没有2个新的字节和2个旧字节等等。 这不能保证long 。 在这里,将0x1122334455667788写入一个保存为0的variables可能会导致另一个线程读取0x112233440000000或0x0000000055667788 。 现在规范并没有要求对象引用是int或long-sized。 由于types安全的原因,我怀疑他们是保证写成primefaces,但在一个64位的虚拟机,这些参考可能是非常好的64位值(只是内存地址)。 这里是我的问题: 是否有任何内存模型规范覆盖(我还没有find)? 长篇文章怀疑是64位的虚拟机上的primefaces吗? 虚拟机是否被迫将引用映射到32位? 问候,Steffen

什么`std :: kill_dependency`做,为什么我想要使用它?

我一直在阅读有关新的C ++ 11内存模型,我已经遇到了std::kill_dependency函数(§29.3/ 14-15)。 我正在努力理解为什么我会想要使用它。 我在N2664提案中find了一个例子,但没有多大帮助。 它首先显示没有std::kill_dependency代码。 这里,第一行在第二行中携带一个依赖项,它依赖于索引操作,然后将依赖项携带到do_something_with函数中。 r1 = x.load(memory_order_consume); r2 = r1->index; do_something_with(a[r2]); 还有一个例子使用std::kill_dependency来打破第二行和索引之间的依赖关系。 r1 = x.load(memory_order_consume); r2 = r1->index; do_something_with(a[std::kill_dependency(r2)]); 据我所知,这意味着索引和对do_something_with的调用在第二行之前是不依赖的。 根据N2664: 这允许编译器将调用重新sorting为do_something_with ,例如,通过执行预测优化来预测a[r2]的值。 为了调用do_something_with的值a[r2]是需要的。 如果假设编译器“知道”数组填充了零,则可以优化对do_something_with(0);调用do_something_with(0); 并根据其他两个指令重新sorting此通话。 它可以产生以下任何一种: // 1 r1 = x.load(memory_order_consume); r2 = r1->index; do_something_with(0); // 2 r1 = x.load(memory_order_consume); do_something_with(0); r2 = r1->index; // 3 do_something_with(0); r1 = x.load(memory_order_consume); […]

如何“获取”和“消费”的记忆命令不同,什么时候“消费”更可取?

C ++ 11标准定义了一个包含内存顺序的内存模型(1.7,1.10),这些顺序大体上是“顺序一致”,“获取”,“消耗”,“释放”和“放松”。 同样粗略地说,一个程序只有在没有竞争的情况下才是正确的,如果所有的行为都可以按照一个行为发生的顺序进行,那么就发生在另一个行为之前 。 一个动作X发生的方式 – 在一个动作Y 之前 ,要么是X在Y之前(在一个线程之内)被sorting,要么在X之前发生X之间的线程 。 后者的条件是什么时候给出的 X与Y同步,或 X在Y之前是依赖项sorting的。 当X是一个primefaces存储,在某些primefacesvariables上有“释放”顺序,而Y是一个在同一个variables上具有“获取”顺序的primefaces载入时,会发生同步 。 依赖性sorting – 之前发生的是类似的情况,其中Y是加载“消费”sorting(和适当的内存访问)。 同步概念扩展了前后关系,在一个线程内彼此在一个线程之间传递,而在另一个线程之前,只是通过一个被严格子集的sequenced-before被调用的进位依赖 ,遵循一套较大的规则,特别是可以用std::kill_dependency中断。 那么,“依赖sorting”这个概念的目的是什么呢? 它提供了什么优势比简单的顺序 / 同步 – 与sorting? 由于规则更严格,我认为可以更有效地实施。 你能举一个例子,从释放/获取到释放/消耗的切换是正确的,并提供了一个不平凡的优势? 何时将std::kill_dependency提供改进? 高级别的参数会很好,但是硬件特定差异的奖励点。

]属性是什么意思?

有人能用一种凡人能理解的语言来解释吗?