c++ Interlocked Ops 在 WinXP 上

标签 c++ node.js windows-xp

我正在尝试为 win xp 构建 nodejs 8.5 .. 我发现 v8_base_2 项目文件 runtime_atomics.cc 定义了一些使用 Interlocked[,And,Or,Add,..][8,16,32 ,..] 需要 Windows 8+ 的功能

文档。对于其中许多函数来说,这些函数的执行将阻止多个线程访问同一个变量。

我想知道的是:“这些函数的执行是否真的阻止了多个线程访问相同的变量相同的位置的变量?”

如果它阻止相同的 var。不是位置,那么这些操作是否有独立于平台或至少与 XP 兼容的实现

尤其是8bit操作数

最佳答案

“相同的变量或相同的位置”暗示了 C++ 不做的区别。对象是内存中具有特定类型的位置。并且给定 InterlockedIncrement,该类型已被限制为整数类型。

最终,这些函数执行总线锁定的读-修改-写。这确实可以防止其他线程的干扰。

关于c++ Interlocked Ops 在 WinXP 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46313028/

相关文章:

windows - setx 命令可以在 Windows XP 中使用吗?

c++ - #define 中的## 是什么意思?

c++ - 使用 Windbg 分析转储文件中可能存在的内存泄漏

c++ - 在 C++ 中读取 .bmp 文件

node.js - 当模型有 2 个关系时,如何在 Sequelize 中使用 where 包括

node.js - 我可以使用 istanbul 来检测 mocha html-cov

javascript - 如何在node.js中识别IPV6私有(private)地址和环回地址?

c# - 确定窗口打开的顺序

Windows 无法在本地计算机上启动 Apache2 - 问题

c++ - 为什么 "true;"(和其他)是有效的 C++ 代码行?