当前位置: 首页 > 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。 获取内存语义指定在尝试任何其他内存作之前,当前线程执行的内存作将可见。 释放内存语义指定在完成所有其他内存作后,当前线程执行的内存作将可见。 借助这些语义,可以强制按特定顺序执行内存作。 在进入受保护区域时使用获取语义,并在离开时释放语义。

相关文章:

  • 【我的创作纪念日】 --- 与CSDN走过的第365天
  • Nginx​中间件的解析
  • 厚铜PCB生产如何保证铜平衡?
  • 数据库对象与权限管理-Oracle数据字典详解
  • vim 命令复习
  • 为TA开发人员介绍具有最新改进的Kinibi-610a
  • js实现2D图片堆叠在一起呈现为3D效果,类似大楼楼层的效果,点击每个楼层不会被其他楼层遮挡
  • 稍早版本的ICG3000使用VXLAN建立L2 VPN
  • [PTA]2025 CCCC-GPLT天梯赛 胖达的山头
  • 『不废话』之Python管理工具uv快速入门
  • uv包管理器如何安装依赖?
  • 直播分享|TinyVue 多端实战与轻量图标库分享
  • 多头注意力(Multi‑Head Attention)
  • A2A + MCP:构建实用人工智能系统的超强组合
  • rlm.exe是什么
  • vue3:十一、主页面布局(修改左侧导航条的样式)
  • vue watch监听路由,第一次进入不触发解决办法
  • CLIP | 训练过程中图像特征和文本特征的在嵌入空间中的对齐(两个投影矩阵的学习)
  • vscode本地docker gdb调试python
  • Qt-托盘的实现
  • “很多中国企业竞争力独一无二”,这场对接会上他频频为协同供应链点赞
  • 山东省淄博市委原常委宋振波被“双开”
  • 为青少年写新中国成立的故事,刘统遗著《火种》出版
  • 商务部:支持“来数加工”等新业态新模式,发展游戏出海业务
  • 4月LPR保持不变:1年期3.1%,5年期以上3.6%
  • 俄官员称乌克兰未遵守停火,乌方暂无回应