为什么需要load_ptr_acquire?
问题描述:
请看下面的代码:为什么需要load_ptr_acquire?
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的/热点/ src目录/股/ VM /内存/ metaspace.cpp线86
答
我在这里回答我的问题,我知道为什么需要该功能。
这只是因为'volatile'保留关键字,它提供了内存排序,因为p可以被多个线程或CPU访问。
'volatile'是什么意思? – doctorlove 2014-09-22 08:42:29
我不确定这个Hotspot应该被认为是C++编码的杰作。仔细阅读。 – 2014-09-22 08:44:01