面试题答案
一键面试代码如下
use std::sync::atomic::{AtomicI32, Ordering};
fn main() {
let atomic_num = AtomicI32::new(0);
atomic_num.store(42, Ordering::Release);
}
Ordering::Release
的作用
在这种场景下,Ordering::Release
用于内存同步。当一个线程使用 Release
顺序进行存储操作时,它会确保在该存储操作之前对内存的所有写入操作(包括对普通变量和其他原子变量的写入),对于其他使用 Acquire
顺序读取相同内存位置的线程来说是可见的。
这有助于在线程间建立一种内存同步机制,使得在释放操作之前的所有写操作对后续的获取操作可见,从而避免因内存重排序导致的数据不一致问题。