当前位置: 首页 > news >正文

Windows 同步-互锁变量访问

互锁变量访问

应用程序必须同步对多个线程共享的变量的访问。 应用程序还必须确保对这些变量的作以原子方式执行(完全或根本不执行)。

对正确对齐的 32 位变量的简单读取和写入是原子作。 换句话说,你最终不会只更新变量的一部分;所有位都以原子方式更新。 但是,不保证同步访问。 如果两个线程正在读取和写入同一个变量,则无法确定一个线程是否会在另一个线程执行写入作之前执行其读取作。

用于正确对齐的 64 位变量的简单读取和写入在 64 位 Windows 上是原子的。 在 32 位 Windows 上,不保证读取和写入 64 位值是原子值。 对于其他大小的变量的读取和写入,不能保证在任何平台上都是原子的。

互锁 API

联锁函数提供了一种简单的机制,用于同步对多个线程共享的变量的访问。 它们还以原子方式对变量执行作。 如果变量位于共享内存中,则不同进程的线程可以使用这些函数。

InterlockedIncrement 和 InterlockedDecrement 函数结合了将变量递增或递减到原子作所涉及的步骤。 此功能在多任务作系统中非常有用,在该作系统中,系统可能会中断一个线程的执行,以向另一个线程授予一部分处理器时间。 如果没有此类同步,两个线程可以读取相同的值,将其递增 1,并将新值存储为 1 而不是 2 的新值。 联锁变量访问函数可防止出现此类错误。

InterlockedExchange 和 InterlockedExchangePointer 函数以原子方式交换指定变量的值。 InterlockedExchangeAdd 函数合并了两个作:一起添加两个变量,并将结果存储在其中一个变量中。

InterlockedCompareExchange、InterlockedCompare64Exchange128和 InterlockedCompareExchangePointer 函数组合了两个作:比较两个值并在其中一个变量中存储第三个值,具体取决于比较结果。

InterlockedAnd、InterlockedOr和 InterlockedXor 函数分别以原子方式执行 AND、OR 和 XOR作。

有一些函数专用于对 64 位内存值和地址执行互锁变量访问,并针对 64 位 Windows 的使用进行了优化。 其中每个函数都包含名称中的“64”;例如,InterlockedDecrement64 和 InterlockedCompareExchangeAcquire64。

大多数互锁函数在所有 Windows 平台上都提供完全内存屏障。 还有一些函数将基本互锁变量访问作与某些处理器支持的获取和释放内存排序语义相结合。 其中每个函数在其名称中包含“Acquire”或“Release”一词;例如,InterlockedDecrementAcquire 和 InterlockedDecrementRelease。 获取内存语义指定在尝试任何其他内存作之前,当前线程执行的内存作将可见。 释放内存语义指定在完成所有其他内存作后,当前线程执行的内存作将可见。 借助这些语义,可以强制按特定顺序执行内存作。 在进入受保护区域时使用获取语义,并在离开时释放语义。


http://www.mrgr.cn/news/99358.html

相关文章:

  • Java从入门到“放弃”(精通)之旅——抽象类和接口⑨
  • 发布一个npm包,更新包,删除包
  • redis数据类型-位图bitmap
  • 【Linux】线程ID、线程管理、与线程互斥
  • cnn 吴恩达 笔记 锚框+yolo 图像分割 +反卷积 unet
  • [密码学实战]详解gmssl库与第三方工具兼容性问题及解决方案
  • [密码学基础]GB与GM国密标准深度解析:定位、差异与协同发展
  • [密码学基础]密码学发展简史:从古典艺术到量子安全的演进
  • [密码学基础]GMT 0029-2014签名验签服务器技术规范深度解析
  • [密码学基础]国密算法深度解析:中国密码标准的自主化之路
  • Redis专题
  • [密码学基础]GMT 0002-2012 SM4分组密码算法 技术规范深度解析
  • NLP高频面试题(四十九)——大模型RAG常见面试题解析
  • [安全实战]逆向工程核心名词详解
  • Three.js 场景编辑器 (Vue3 + TypeScript 实现)
  • HTML 初识
  • # 手写数字识别:使用PyTorch构建MNIST分类器
  • Deepseek输出的内容如何直接转化为word文件?
  • [密码学基础]GM/T 0018-2023 密码设备应用接口规范深度解析:技术革新与开发者实践
  • 论文阅读:2025 arxiv AI Alignment: A Comprehensive Survey