小红花·文摘
  • 首页
  • 广场
  • 排行榜🏆
  • 直播
  • FAQ
Dify.AI

不同 CPU 架构的原子操作实现差异显著。x86 使用 LOCK 前缀,性能高但在竞争时代价大;ARM 提供 LL/SC 和 LSE,后者在高并发下表现优越;RISC-V 采用 AMO 和 LR/SC。高频原子操作可能导致缓存行争抢,影响性能。内核 atomic API 封装了这些差异,提供一致的接口。

【操作系统百科】原子 RMW 操作

土法炼钢兴趣小组的博客
土法炼钢兴趣小组的博客 · 2026-05-25T00:00:00Z

在学习竞争条件和原子操作时,示例代码展示了多线程对全局变量的自增操作。C语言因未加锁导致更新丢失,而Python因GIL的存在结果稳定。Python 3.13引入无GIL版本可复现竞争,通过函数调用替代简单自增可引发GIL切换,允许竞争发生。

在 Python 中复现 Race Condition

Origin's blog
Origin's blog · 2026-01-24T01:18:00Z
译: Programming Language Memory Models (Memory Models, Part 2)

编程语言内存模型探讨了并行程序中线程共享内存的行为保障。通过原子变量和操作,程序可以同步线程,避免数据竞争。现代语言如C、Java和C++提供顺序一致的原子操作,确保无数据竞争的程序表现为顺序一致执行。尽管细节不同,各语言都致力于消除数据竞争,提高并发程序的可靠性。

译: Programming Language Memory Models (Memory Models, Part 2)

Steins;Lab
Steins;Lab · 2025-10-01T06:00:33Z

原子操作是不可中断的,Go语言通过sync/atomic包支持安全的并发访问共享数据。与互斥锁相比,原子操作性能更高,适用于简单内存操作,而互斥锁适合复杂代码块。基准测试表明,原子操作比互斥锁快约40%。

Go语言原子操作完全指南

郑文峰的博客
郑文峰的博客 · 2025-06-14T15:02:33Z
无锁编程 之 原子内存排序

无锁编程通过硬件的原子操作实现线程同步,避免了操作系统线程锁的高开销,依赖于原子性、排他性和顺序性,适用于多任务系统。超线程和协程等技术提供了易用性与性能的平衡,适应不同应用场景。

无锁编程 之 原子内存排序

Rust.cc
Rust.cc · 2025-06-02T07:09:38Z
修复Redis计数器中的竞争条件:为什么Lua脚本是原子性和可靠性的关键

使用Redis进行速率限制时,INCR和EXPIRE可能导致竞争条件,两个客户端同时执行INCR可能导致计数器错误。虽然Redis支持事务,但无法确保逻辑原子性。使用Lua脚本可以将多个命令作为原子操作执行,从而避免竞争条件,提高安全性和效率。

修复Redis计数器中的竞争条件:为什么Lua脚本是原子性和可靠性的关键

DEV Community
DEV Community · 2025-05-17T09:44:51Z
为ARM64引入/forceInterlockedFunctions开关

在Visual Studio 2022 17.14中,引入了/forceInterlockedFunctions开关,Armv8.0默认开启,Armv8.1+默认关闭。该开关生成不同的原子操作以解决Armv8.0的性能问题。启用LSE特性会覆盖默认设置,建议在ARM64EC中保持开启。

为ARM64引入/forceInterlockedFunctions开关

C++ Team Blog
C++ Team Blog · 2025-05-13T10:00:25Z
原语

原语是计算机中不可中断的机器指令,主要用于操作系统的进程调度和同步,执行方式类似于原子操作,通常通过禁用中断或使用专用指令实现。

原语

極客死亡計劃
極客死亡計劃 · 2025-04-10T13:45:00Z
Rust 并发:原子操作解析

原子类型和原子操作是不可中断的机器指令序列,确保多核CPU中的操作原子性。Rust的std::sync::atomic模块提供多种原子操作,简化并发编程并支持高效无锁操作。尽管原子操作性能优于锁,但在复杂场景中,锁仍然不可或缺。

Rust 并发:原子操作解析

DEV Community
DEV Community · 2025-03-27T20:57:06Z
你的Go代码中隐藏着定时炸弹:竞争条件解析 💣

Goroutines是Go语言的轻量级线程,支持并发处理。使用Goroutines处理订单可将时间从6分钟缩短至500毫秒。但多个Goroutines同时访问共享资源可能导致竞争条件,因此需要使用Mutex或原子操作等同步机制来确保数据一致性。Mutex通过锁定资源实现顺序访问,而原子操作则提供无中断的更新方式,二者均能有效解决竞争问题,确保库存准确。

你的Go代码中隐藏着定时炸弹:竞争条件解析 💣

DEV Community
DEV Community · 2025-01-20T09:30:01Z

DeviceSyncer 是一个仅需 15 行代码的线程同步工具类,通过原子操作确保线程在特定任务后同步。文章讨论了 atomicInc 的语义及其在 DeviceSyncer 中的应用,指出了数据竞争问题并提出改进建议。实验验证了 DeviceSyncer 的有效性,发现其在某些情况下能确保线程间的可见性。

mscclpp DeviceSyncer 真的能 sync 么?

学习让我快乐
学习让我快乐 · 2024-11-30T16:00:00Z
如何在Django REST中上传CSV文件

在Django REST中上传CSV文件并实现原子操作,可以有效避免部分数据录入问题。使用Postman发送请求时,需要设置文件类型和内容。代码通过pandas读取CSV,进行数据验证,并在事务中批量创建数据,确保操作成功或完全回滚。

如何在Django REST中上传CSV文件

DEV Community
DEV Community · 2024-11-05T10:05:14Z

Java中的Unsafe类提供了执行低级别、不安全操作的方法,如内存操作、CAS操作、类相关操作、对象操作、线程调度、系统信息获取、内存屏障、数组操作等。它还提供了原子操作和线程调度相关的方法,以及确保变量可见性的方法。

java工具-高并发-JUC下工具类Unsafe解密

六虎
六虎 · 2024-03-30T08:22:31Z

C#中的线程安全技术包括锁机制、原子操作、线程安全集合和可重入锁等。选择合适的技术很重要,同时要注意避免死锁和性能问题。

c#线程安全讲解

dotNET跨平台
dotNET跨平台 · 2024-02-08T00:03:52Z

本文讨论了原子操作和支持原子操作的指令集,单处理器系统中可在一条指令中完成,多处理器系统中需使用特定指令前缀或指令保证原子性。X86架构可使用lock指令前缀实现,ARM架构早期版本使用SWP指令,后来版本使用LDREX和STREX指令。这些指令保证内存访问的原子性。

对 int 变量赋值的操作是原子的吗?

良许Linux教程网
良许Linux教程网 · 2024-01-10T11:24:16Z
门控部署:解决大规模模式部署的复杂性

Gated Schema Deployments 旨在简化大规模数据库的模式变更,允许用户将模式更改视为原子操作。通过并行处理和顺序执行,降低了多维部署的复杂性。用户可以选择何时完成部署,并在30分钟内轻松撤回更改,确保数据安全和一致性。这一功能提升了开发流程的现代化和连贯性。

门控部署:解决大规模模式部署的复杂性

PlanetScale - Blog
PlanetScale - Blog · 2022-09-06T21:50:00Z

在Linux中,使用mv命令移动文件或文件夹时,按下Ctrl+C不会导致文件损坏。对于同一文件系统,mv操作是原子的,不会被中断。跨文件系统时,mv会变为复制和删除,可能留下不完整的文件,但确保源或目标路径中至少有一个是完整的。

2021-25: mv 与 rename

Xuanwo's Blog
Xuanwo's Blog · 2021-06-28T01:00:00Z
ASPLOS '20: Hermes 复制协议

一个城邦通过民主方式自给自足,但基础设施差,投票常丢失。为解决此问题,采用Hermes协议,利用稳定成员处理提案,支持分布式存储和原子操作,确保写操作成功,且最多一个并发RMW成功。

ASPLOS '20: Hermes 复制协议

Xuanwo's Blog
Xuanwo's Blog · 2020-07-03T01:00:00Z
  • <<
  • <
  • 1 (current)
  • >
  • >>
👤 个人中心
在公众号发送验证码完成验证
登录验证
在本设备完成一次验证即可继续使用

完成下面两步后,将自动完成登录并继续当前操作。

1 关注公众号
小红花技术领袖公众号二维码
小红花技术领袖
如果当前 App 无法识别二维码,请在微信搜索并关注该公众号
2 发送验证码
在公众号对话中发送下面 4 位验证码
小红花技术领袖俱乐部
小红花·文摘:汇聚分发优质内容
小红花技术领袖俱乐部
Copyright © 2021-
粤ICP备2022094092号-1
公众号 小红花技术领袖俱乐部公众号二维码
视频号 小红花技术领袖俱乐部视频号二维码