GlobalMemoryStatusEx 线程安全吗?
Is GlobalMemoryStatusEx thread safe?
从 MSDN 页面:
"GlobalMemoryStatusEx 函数返回的信息是易失性的。不能保证对此函数的两次顺序调用将返回相同的信息。
这是有道理的,但是我无法确定这是否线程安全。有没有人确定一种或另一种方式?我尝试过谷歌搜索这个,但找不到这些信息。
MSDN 页面指出的是函数返回的信息随时间变化:这就是"易失性"的含义。例如,GetSystemTime
返回的信息也是"易失性的"。
关于过程的其他不同概念是"可重入"和"线程安全"。可重入意味着过程使用的信息依赖于局部变量,而不是全局变量,全局变量可以解释为线程安全过程的一种形式。但是,"线程安全"意味着该过程在访问过程所需的资源时实现线程互斥机制。
现在,尽管 MSDN 没有说明该函数是线程安全的,但如果它访问系统资源,我们可以假设该函数实际上是线程安全的。此外,该函数采用指向本地结构(函数在其中写入信息)的指针,因此它是可重入的。如果GlobalMemoryStatusEx
返回指向全局结构的指针,那么我们可以怀疑该函数不是线程安全的。在这种情况下,来自MS的人可能会注意到这一点。例如,请参阅此链接的"备注"部分的最后一个注释:http://msdn.microsoft.com/en-us/library/2c8d19sb(v=vs.90).aspx
相关文章:
- 从不同线程使用int64的不同字节安全吗
- 如何将元素添加到数组的线程安全函数?
- C++中的线程安全删除
- 在std::thread中,joinable()然后join()线程安全吗
- 在c++队列中使用pop和visit实现线程安全
- 以线程安全的方式调用"QQuickPaintedItem::updateImage(const QImage&image)"(no QThread)
- 全局变量 多读取器 一个写入器多线程安全?
- 共享队列的线程安全
- boost::文件系统::recursive_directory_iterator多线程安全
- 静态 constexpr 类成员变量对多线程读取是否安全?
- 以线程安全的方式转换 C/C++ 中时区名称字符串的时区偏移量
- 线程安全运算符<<
- 如何使缓存线程安全
- C++线程安全:如果只有一个线程可以写入非原子变量,但多个线程从中读取. 会遇到问题吗?
- 提升精神 V2 Qi 语法线程安全吗?
- 线程调用的函数对对象删除是否安全?
- asio 链对象线程安全吗?
- 线程安全队列 c++
- 提供对不同类型的数据(建议、代码审查)的线程安全访问的类
- 有没有更好的方法可以使此代码线程安全?线程局部静态似乎是一个生硬的工具