为什么需要load_ptr_acquire?

时间:2014-09-22 08:30:29

标签: java c++ jvm

请参阅以下代码:

intptr_t load_ptr_acquire(volatile intptr_t*   p) { return *p; }

没用吗? 如果使用此功能:

intptr_t p = some value;
int value = (int)load_ptr_acquire(&p);

为什么需要这个功能而不是直接写作:

int value = (int)p;

我想知道这个伎俩。

上面的代码来自jdk8 / openjdk / hotspot / src / share / vm / memory / metaspace.cpp第86行。

1 个答案:

答案 0 :(得分:0)

我在这里回答我自己的问题,我知道为什么需要这个功能。

这只是因为'volatile'保留关键字,它提供了内存排序,因为p可能被多个线程或CPU访问。