【Rust日报】Rust中的Mutex, Atomics 和 UnsafeCell

2024 Rust中国大会大会将于 9 月 07 日 - 08 日在上海举办。精彩议题逐步放出中。

2024 Rust中国大会报名链接暨第一批精彩演讲主题介绍

2024 Rust中国大会第二批精彩演讲主题列表

2024 Rust中国大会第三批精彩演讲主题列表

QUIC协议的一些基操解释

这篇文章讨论了如何在不丢失数据的情况下正确关闭一个QUIC连接。作者指出,关闭QUIC连接的关键在于协调好发送方和接收方的操作。只有接收最后一批数据的接收方应该关闭连接,以确保所有数据都已成功传输并读取。文章还解释了QUIC连接和流的状态,强调了为什么不能依赖某些状态来判断数据的接收情况。这种关闭方式对于保证数据完整性至关重要。

https://www.iroh.computer/blog/closing-a-quic-connection

Rust实现的一个狭义相对论模拟

https://sogebu.github.io/special-relativity-web/20240810/#simulations

Rust中的Mutex, Atomics 和 UnsafeCell

这篇文章主要讨论了Rust中的Mutex、Atomics和UnsafeCell的实现原理和相关概念:

  1. 文章通过自定义实现AtomicUsize来探讨原子操作的原理。作者发现简单使用UnsafeCell并不能实现真正的原子性,因为编译器会对其进行优化。

  2. 真正的原子操作需要使用编译器内部函数(intrinsics)来实现,这些函数不仅生成原子指令,还会告诉编译器不要对其进行优化。

  3. Mutex的实现基于UnsafeCell和一个原子整数。获取锁时使用原子的compare_exchange操作,释放锁时使用原子操作配合内存顺序(memory ordering)来保证可见性。

  4. 内存顺序(如Acquire和Release)不仅影响生成的机器指令,还会限制编译器的优化,从而保证跨线程的内存访问顺序。

  5. VolatileCell用于嵌入式系统中访问内存映射I/O。它使用volatile读写操作,但仍存在一些安全性问题。

  6. volatile操作与原子操作不同,不能建立happens-before关系。对于DMA等操作,需要额外使用内存屏障(fence)来保证顺序。

  7. 文章深入探讨了UnsafeCell、原子操作、内存顺序等概念如何在底层影响Rust的并发安全性,对理解Rust的并发模型很有帮助。

https://leon.schuermann.io/blog/2024-08-07_rust-mutex-atomics-unsafecell_spooky-action-at-a-distance.html

--

From 日报小组 Mike

社区学习交流平台订阅:

  • Rustcc论坛: 支持rss

  • 微信公众号:Rust语言中文社区

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值