< 返回版块

Mike Tang 发表于 2024-08-20 03:58

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

社区学习交流平台订阅:

评论区

写评论

还没有评论

1 共 0 条评论, 1 页