为什么需要load_ptr_acquire

Why need load_ptr_acquire?

本文关键字:ptr acquire load 为什么      更新时间:2023-10-16

请参阅以下代码:

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行。

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

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