GlobalMemoryStatusEx 线程安全吗?

Is GlobalMemoryStatusEx thread safe?

本文关键字:安全 线程 GlobalMemoryStatusEx      更新时间:2023-10-16

从 MSDN 页面:

"GlobalMemoryStatusEx 函数返回的信息是易失性的。不能保证对此函数的两次顺序调用将返回相同的信息。

这是有道理的,但是我无法确定这是否线程安全。有没有人确定一种或另一种方式?我尝试过谷歌搜索这个,但找不到这些信息。

MSDN 页面指出的是函数返回的信息随时间变化:这就是"易失性"的含义。例如,GetSystemTime返回的信息也是"易失性的"。

关于过程的其他不同概念是"可重入"和"线程安全"。可重入意味着过程使用的信息依赖于局部变量,而不是全局变量,全局变量可以解释为线程安全过程的一种形式。但是,"线程安全"意味着该过程在访问过程所需的资源时实现线程互斥机制。

现在,尽管 MSDN 没有说明该函数是线程安全的,但如果它访问系统资源,我们可以假设该函数实际上是线程安全的。此外,该函数采用指向本地结构(函数在其中写入信息)的指针,因此它是可重入的。如果GlobalMemoryStatusEx返回指向全局结构的指针,那么我们可以怀疑该函数不是线程安全的。在这种情况下,来自MS的人可能会注意到这一点。例如,请参阅此链接的"备注"部分的最后一个注释:http://msdn.microsoft.com/en-us/library/2c8d19sb(v=vs.90).aspx