小红花·文摘
  • 首页
  • 广场
  • 排行榜🏆
  • 直播
  • 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 位验证码
小红花技术领袖俱乐部
小红花·文摘:汇聚分发优质内容
小红花技术领袖俱乐部
Copyright © 2021-
粤ICP备2022094092号-1
公众号 小红花技术领袖俱乐部公众号二维码
视频号 小红花技术领袖俱乐部视频号二维码