C++ GlobalMemoryStatusEx线程安全吗?

C++ GlobalMemoryStatusEx线程安全吗?,c++,windows,thread-safety,C++,Windows,Thread Safety,从: “GlobalMemoryStatusEx函数返回的信息不稳定。不能保证对该函数的两个连续调用将返回相同的信息。” 这是有道理的,但是我无法确定这是否是线程安全的。有人知道这样或那样的方法吗?我试过用谷歌搜索,但找不到这些信息。MSDN页面上说,函数返回的信息会随着时间的推移而变化:这就是“volatile”的意思。例如,GetSystemTime返回的信息也是“不稳定的” 关于过程的其他不同概念是“可重入”和“线程安全”。可重入意味着过程使用的信息依赖于局部变量,而不是全局变量,这可能被

从:

“GlobalMemoryStatusEx函数返回的信息不稳定。不能保证对该函数的两个连续调用将返回相同的信息。”


这是有道理的,但是我无法确定这是否是线程安全的。有人知道这样或那样的方法吗?我试过用谷歌搜索,但找不到这些信息。

MSDN页面上说,函数返回的信息会随着时间的推移而变化:这就是“volatile”的意思。例如,
GetSystemTime
返回的信息也是“不稳定的”

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


现在,虽然MSDN没有说函数是线程安全的,但如果它访问系统资源,我们可以假设函数实际上是线程安全的。此外,函数接受指向本地结构(函数在其中写入信息)的指针,因此它是可重入的。如果
GlobalMemoryStatusEx
返回一个指向全局结构的指针,那么我们可能会怀疑该函数不是线程安全的。在这种情况下,MS的人可能会注意到这一点。例如,请参阅此链接备注部分的最后一条注释:

在本文中,您对“线程安全”的确切含义是什么??看起来这是一个内核函数调用,将阻止调用线程,直到获取并返回结果。当您从多个线程调用此函数时,不会损坏任何程序状态。它只是想提醒你,你得到的信息马上就过时了。这是一种代码味道。我可以从多个并发线程安全地调用它,并依靠结果来合理地准确吗?编辑:考虑到结果将立即过时的事实。@KSletmoe,因此您不能依赖于为后续调用获得相同的结果,即使它们是后续调用,因为线程调度。文件上就是这么说的。“合理准确”的意思是什么,你必须自己决定。谢谢,这个答案以及对我问题的评论回答了我想知道的。