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

大多数自称“无锁”的代码并不符合无锁定义,尤其在ARM架构上存在数据竞争问题。无锁编程需满足严格的进展保证,确保系统不被单个线程阻塞,正确的内存顺序和ABA问题处理也至关重要。通常情况下,使用锁比无锁更可靠且易于维护。

大多数'无锁'代码其实不是无锁的

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

文章讨论了在ARM64架构下,内核模块中的环形缓冲区因缺乏内存屏障而导致的数据竞争问题。调试发现,更新索引和写数据的顺序可能在ARM上被重排,导致消费者读取到过时数据。通过添加适当的内存屏障(smp_wmb和smp_rmb),成功解决了这一问题。文章强调了理解编译器与CPU重排的区别,以及在并发编程中正确使用屏障的重要性。

Linux 内核的内存屏障:一个让我调了三天的 bug

土法炼钢兴趣小组的博客
土法炼钢兴趣小组的博客 · 2026-03-31T00:00:00Z
真相调查:Go 语言真的消灭了 Undefined Behavior 吗?

Go语言并未完全消除未定义行为(UB),而是将其转移至并发环境。尽管Go通过严格定义行为提高了安全性,但在数据竞争等方面仍存在风险,开发者需谨慎使用并发以确保代码安全。

真相调查:Go 语言真的消灭了 Undefined Behavior 吗?

Tony Bai
Tony Bai · 2026-03-16T00:27:35Z

本文讨论了Luke Cheeseman在并发和数据竞争方面的研究,特别是他的论文《当并发重要时:面向行为的并发》。作者受JEP 500的启发,深入研究了Java语言规范中“final”的正式界限,建议直接查阅该文档。

关于final的边界

insidejava
insidejava · 2025-12-08T00:00: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
Swift 6: Sendable、@unchecked Sendable、@Sendable、sending and nonsending

Swift 的并发模型引入了关键字,如 Sendable、@unchecked Sendable、@Sendable、sending 和 nonsending,帮助开发者理解跨隔离域传递的安全性,确保数据竞争问题得到有效管理。通过 actor 和 @MainActor 实现的隔离域概念,确保同一时刻只有一个任务访问受保护状态。理解这些关键字对编写安全的并发代码至关重要。

Swift 6: Sendable、@unchecked Sendable、@Sendable、sending and nonsending

肘子的Swift记事本
肘子的Swift记事本 · 2025-08-06T14:00:00Z
【Rust日报】2025-07-26 文章《没有线程安全,就没有内存安全》

文章探讨了内存安全与线程安全的关系,强调避免未定义行为的重要性。通过 Go 语言示例,展示数据竞争对内存安全的影响,并指出 Go 在并发处理上的不足。作者认为语言安全性是一个谱系,Go 更接近内存安全语言,但仍需改进。

【Rust日报】2025-07-26 文章《没有线程安全,就没有内存安全》

Rust.cc
Rust.cc · 2025-07-27T11:50:02Z

本文讨论了内存安全与数据竞争的关系,指出Java和C#等语言虽然被视为内存安全语言,但仍可能发生数据竞争。数据竞争本身并不构成安全问题,只有在导致内存损坏时才会产生风险。此外,Fil-C语言在内存安全方面具有优势,数据竞争与内存安全的定义仍需进一步探讨。

美国国家安全局(NSA)和网络安全与基础设施安全局(CISA)联合发布的报告《内存安全语言:减少现代软件开发中的漏洞》

程序师
程序师 · 2025-07-01T02:18:23Z

RustConf 2025 将探讨 Rust 在微软、人工智能和医疗等多个领域的应用,强调内存序的正确使用以避免数据竞争。同时,介绍了多个 Rust 项目和工具,如 beamterm 和 Utsuru,展示了 Rust 的广泛应用潜力。

【Rust日报】2025-06-19 Graph-flow - 受 LangGraph 启发的 AI 工作流状态图执行框架

Rust.cc
Rust.cc · 2025-06-19T02:00:11Z
如何在Swift 6中安全地将数组移动到MainActor

在Swift开发中,处理MainActor的异步任务时,需确保在MainActor上下文中安全更新数组,以避免数据竞争和隔离错误。通过定义异步方法并使用`await`关键字,可以有效管理异步状态更新,确保应用的响应性和安全性。

如何在Swift 6中安全地将数组移动到MainActor

DEV Community
DEV Community · 2025-05-14T03:30:19Z
Rust中的所有权与借用机制解析

Rust中的所有权机制管理内存,确保每个值只有一个所有者,超出作用域时自动释放内存。借用允许多个变量访问同一内存,但不能同时修改。可变引用和不可变引用是内存管理的重要部分,前者允许修改,后者只读,以防数据竞争。使用时需谨慎,以避免内存安全问题。

Rust中的所有权与借用机制解析

DEV Community
DEV Community · 2025-04-20T19:05:15Z
Golang中的Mutex与RWMutex:开发者指南

本文介绍了Go语言中的并发问题及解决方案,重点讲解了Mutex和RWMutex的使用。Mutex用于确保共享数据的独占访问,适合写操作频繁的场景;RWMutex允许多个读者同时访问,适合读操作频繁的情况。通过示例展示了如何安全管理并发访问,避免数据竞争。

Golang中的Mutex与RWMutex:开发者指南

DEV Community
DEV Community · 2025-04-04T17:32:39Z
本周学习 #3

我对Go语言的goroutines有了基本理解,接下来将重点研究context包。我认识到数据竞争和竞争条件是不同的,掌握并发问题非常重要。将继续深入学习这些主题。

本周学习 #3

DEV Community
DEV Community · 2025-02-10T16:00:00Z

在.NET中,线程锁是确保多线程安全的重要机制,防止数据竞争和不一致状态。常见的锁包括自旋锁、互斥锁、混合锁、读写锁和信号量。使用锁时需注意死锁、性能问题及选择合适的锁类型。

NET中的线程锁

dotNET跨平台
dotNET跨平台 · 2025-02-09T00:01:41Z
Go语言中的sync.Mutex研究

本文讨论了Go语言中的sync.Mutex及其在防止数据竞争中的重要性。通过在访问共享资源时使用Lock和Unlock,可以避免多个goroutine之间的数据不一致。Go 1.18引入了TryLock方法,但使用场景有限。建议开发中使用-race选项检测数据竞争,以便及时发现问题。合理使用mutex能提升并发程序的安全性。

Go语言中的sync.Mutex研究

DEV Community
DEV Community · 2025-02-06T16:00:00Z

SomeType 没有实现 Send 和 Sync,但在确保代码无数据竞争的情况下,可以使用 unsafe 显式实现这两个特性。

在老外的仓库里,用中文翻译藏这样的私货是不是不太好

Rust.cc
Rust.cc · 2025-01-21T01:32:57Z
C++中的并发性:降低风险

本文讨论了C++中的并发性,指出多线程可以提升应用性能,但不当管理可能导致数据竞争和死锁等问题。遵循SEI CERT C++编码标准对确保安全性和稳定性至关重要。

C++中的并发性:降低风险

DEV Community
DEV Community · 2025-01-13T01:21:23Z
掌握Rust的并发编程:开发者安全并行编程指南

Rust语言通过所有权系统和类型检查实现安全高效的并发编程,有效避免数据竞争和死锁。其轻量级线程、同步原语及async/await语法简化了并发代码的编写与维护,提升了生产力和系统可靠性。

掌握Rust的并发编程:开发者安全并行编程指南

DEV Community
DEV Community · 2024-12-10T12:08:19Z

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

mscclpp DeviceSyncer 真的能 sync 么?

学习让我快乐
学习让我快乐 · 2024-11-30T16:00:00Z

Rust是一种系统编程语言,通过所有权系统管理内存,无需垃圾回收器,确保内存安全和高性能。内存分为栈和堆,栈用于固定大小数据,堆用于动态数据。所有权系统规定每个值有唯一所有者,超出作用域自动释放内存,避免泄漏。借用机制允许访问值而不拥有,分为不可变和可变借用,确保无数据竞争。Rust通过严格规则防止双重释放、悬空指针和数据竞争,保障程序安全高效。

Rust中的所有权与借用

DEV Community
DEV Community · 2024-10-05T22:23:14Z
  • <<
  • <
  • 1 (current)
  • 2
  • >
  • >>
👤 个人中心
在公众号发送验证码完成验证
登录验证
在本设备完成一次验证即可继续使用

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

1 关注公众号
小红花技术领袖公众号二维码
小红花技术领袖
如果当前 App 无法识别二维码,请在微信搜索并关注该公众号
2 发送验证码
在公众号对话中发送下面 4 位验证码
友情链接: MOGE.AI 九胧科技 模力方舟 Gitee AI 菜鸟教程 Remio.AI DeekSeek连连 53AI 神龙海外代理IP IPIPGO全球代理IP 东波哥的博客 匡优考试在线考试系统 开源服务指南 蓝莺IM Solo 独立开发者社区 AI酷站导航 极客Fun 我爱水煮鱼 周报生成器 He3.app 简单简历 白鲸出海 T沙龙 职友集 TechParty 蟒周刊 Best AI Music Generator

小红花技术领袖俱乐部
小红花·文摘:汇聚分发优质内容
小红花技术领袖俱乐部
Copyright © 2021-
粤ICP备2022094092号-1
公众号 小红花技术领袖俱乐部公众号二维码
视频号 小红花技术领袖俱乐部视频号二维码